【问题标题】:Display all the option values using selectInput() in R Shiny在 R Shiny 中使用 selectInput() 显示所有选项值
【发布时间】:2015-09-05 12:18:21
【问题描述】:

在我的例子中,选项是状态,而不是一组复选框,我有一个 selectInput 下拉菜单。我通过 UI 中的单个复选框触发逻辑。现在,我想要的是,每次单击该框时,我的所有状态都应在下拉列表中预先选择,并且需要用户输入未单击复选框时的情况。 但不幸的是,无论用户是否点击了复选框,输出始终是用户在下拉菜单中选择的内容,即默认的“所有状态”不会填充为预选。

Server.R -  
    observe({
    if(input$national>0)
    {if (input$national %% 2 == 0){
        updateSelectInput(session,
                        "State",label = h4("Select any state"),                               
                        choices = list("NSW" = "NSW","Victoria" = "Victoria","SA" = "SA","Tasmania" = "Tasmania"),                                                                                                                                 
                        selected = c("NSW","Victoria","SA","Tasmania"),multiple = TRUE                                                          
                        )}
      else 
      {updateSelectInput(session,
                        "State",                                
                        label = h4("Select any state"),                               
                        choices = list("NSW" = "NSW","Victoria" = "Victoria","SA" = "SA","Tasmania" = "Tasmania"),                                                                                                                                 
                        selected = c(),multiple = TRUE                                                          
                          ) 
  }}
}) 

非常感谢任何帮助,并在此先感谢您。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    在你的 ui.r 中添加一个按钮

    actionButton("selectall", label="Select/Deselect all")
    

    在你的 server.r 中让selectall 修改你的选择器输入(这里我称之为show_vars)。

     observe({
      if (input$selectall > 0) {
        if (input$selectall %% 2 == 0){
          updateCheckboxGroupInput(session=session, 
                                   inputId="show_vars",
                                   choices = list("carat" = "carat",
                                                  "cut" = "cut",
                                                  "color" = "color",
                                                  "clarity"= "clarity",
                                                  "depth" = "depth",
                                                  "table" = "table",
                                                  "price" = "price",
                                                  "x" = "x",
                                                  "y" = "y",
                                                  "z" = "z"),
                                   selected = c(names(diamonds)))
    
        } else {
          updateCheckboxGroupInput(session=session, 
                                   inputId="show_vars",
                                   choices = list("carat" = "carat",
                                                  "cut" = "cut",
                                                  "color" = "color",
                                                  "clarity"= "clarity",
                                                  "depth" = "depth",
                                                  "table" = "table",
                                                  "price" = "price",
                                                  "x" = "x",
                                                  "y" = "y",
                                                  "z" = "z"),
                                   selected = c())
    
        }}
    })
    

    mod 2 (%% 2) 使它可以在每秒钟单击一次以全选,否则默认为第二个分支,您可以在其中预选任何你想要的东西(或者在我的情况下什么都不选)。

    【讨论】:

    • 我很久以前从另一个答案中自己拿了这个,但现在找不到。
    • 非常感谢您对 Serban 的帮助。我已经取得了一些进展,但需要更多帮助。请查看帖子编辑。
    猜你喜欢
    • 2018-06-14
    • 2021-07-09
    • 2017-12-02
    • 2017-08-23
    • 2020-05-30
    • 2020-10-11
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多