【问题标题】:How to use query parameters in Shiny如何在 Shiny 中使用查询参数
【发布时间】:2016-06-17 12:23:30
【问题描述】:

我在数据库中有两个用户组。我想查询数据库以在 Shiny 应用程序中显示一个 checkboxGroup,其中只有一个组,具体取决于 URL 查询参数。

例如,带有这样的 URL 查询参数:

http://127.0.0.1:4014/?groupId=1

理想情况下,我想获取该 groupId 值并使用它来过滤用户组:

res <- dbSendQuery(con, paste('SELECT user_id, user_name
        FROM   info i , enrolment e 
        WHERE  i.user_id = e.fk_user_id 
        AND    e.fk_group_id = ', groupId))
dataf <- dbFetch(res)
userlist <- as.list(setNames(dataf$user_id, dataf$user_name))

然后在 Shiny 中显示该用户列表的内容,作为 checkboxGroup,如下所示:

ui <- fluidPage( column(3, checkboxGroupInput("users", 
                                label = h3("User Names"), 
                                choices = userlist)))

是否可以将此类 URL 查询参数(如我的示例中的 groupId)传递给 Shiny 应用程序? (如果我对 groupId 进行硬编码,我的代码就可以正常工作)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    http://shiny.rstudio.com/articles/client-data.html

    这就是您要查找的内容:

    groupId <- parseQueryString(session$clientData$url_search)
    

    记得添加

    shinyServer(function(input, output, session)
    

    在一天结束时它可能看起来像这样:

    ui <- bootstrapPage(
      h3("groupId"),
      verbatimTextOutput("queryText")
    )
    
    server <- function(input, output, session) {
      output$queryText <- renderText({
        query <- parseQueryString(session$clientData$url_search)
        paste(query, sep = "", collapse=", ")
      })
    }
    
    shinyApp(ui = ui, server = server)
    

    看看你的要点,你需要把你的数据库对象/变量放在服务器部分。

    server(function(input, output, session) {
      source("keys.R")
      con <- dbConnect( MySQL(), user=login, password=pass, db=database, host=host)
    

    接下来,仍然是在服务器部分,我会将您的 dbGetQuery 与 groupId 参数组合在观察者或反应式表达式中,并存储输出。

    通过这种方式,您可以将该输出应用到 UI 中的 checkboxGroupInput。

    【讨论】:

    • 如果我理解正确,会话变量仅在服务器部分可用,使用反应式表达式或观察者。我想在显示 UI 部分之前访问 groupId 变量(我想根据 groupId 值显示 checkboxGroupInput 值)。我试过这个:gist.github.com/juananpe/526d56f79e4606df4200没有成功(在UI之前的sql查询中,groupId总是取默认值,1)
    • ".. 在服务器部分,我会在观察者或反应式表达式中放入您的 dbGetQuery"。那成功了。我错误地尝试在 UI 部分使用 dbGetQuery。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 2019-07-24
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 2020-04-24
    相关资源
    最近更新 更多