我想设计一个应用程序,它也可以选择从客户端Web浏览器获取输入。因此,如果我的网址为MANIFEST.MF
,我知道我可以使用
www.something.com?text=myValue
myValue
这个简单的应用程序从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')))
))
的选择。
所以我在服务器端执行此操作
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
答案 0 :(得分:1)
你所做的只是工作,除了...... updateSelectizeInput
的第一个参数是session
对象,而不是元素id。见?updateSelectizeInput
。所以,只需添加它:
updateSelectizeInput(session, 'in1',
label = NULL,
choices = c("alpha","beta", "gamma"),
selected = query_text,
server = TRUE)
它会起作用。