2
我想设计一个应用程序,它可以选择性地从客户端Web浏览器获取输入。所以,如果我的网址是www.something.com?text=myValue
我知道我可以存储myValue
与闪亮,是否有可能更新基于客户端Web浏览器输入的输入选择?
query <- parseQueryString(session$clientData$url_search)
if (!is.null(query[['text']])) {
query_text <<- query[['text']]
}
这个简单的应用程序从一个selectizeInput
取值,并使得它在textOutput
。
ui <- shinyUI(fluidPage(
fluidRow(column(6, selectizeInput("in1",
label = NULL,
choices = c("alpha",
"beta",
"gamma"),
selected = "beta")),
column(6, textOutput('out1')))
))
不过我想更新的选择我如果任何值从客户端web浏览器传递selectizeInput
。
所以我这样做是在服务器端
server <- shinyServer(function(input, output, session) {
query_text <- character()
observe({
query <- parseQueryString(session$clientData$url_search)
if (!is.null(query[['text']])) {
query_text <<- query[['text']]
updateSelectizeInput('in1',
label = NULL,
choices = c("alpha","beta", "gamma"),
selected = query_text,
server = TRUE)
}
})
output$out1 <- renderText({
input$in1
})
})
如果我启动我的
shinyApp(ui = ui, server = server)
应用程序,我没有得到任何错误,我能够修改textOutput
通过手动选择来自selectizeInput
的值。但是,当我试图通过一个数值与我的浏览器,因此引发我if
条件,我得到这个错误
Warning: Error in $: $ operator is invalid for atomic vectors
Stack trace (innermost first):
56: dropNulls
55: updateSelectizeInput
54: observerFunc [/Users/francesco/Desktop/Tests/testy/app.R#35]
1: runApp
ERROR: [on_request_read] connection reset by peer