newby与checkboxGroupInput混淆

时间:2017-04-17 20:59:06

标签: r shiny

如果我将checkboxGroup定义为

 checkboxGroupInput("checkGroup", label = h2("Data Sets"), 
                     choices = list("Accounts Created" = 1, "Comments" = 2,
                                    "Submissions" = 3, "Votes" = 4),
                     selected = NULL)

然后在服务器端,如何访问四个框的选择状态?是input$checkGroup[1]input$checkGroup[2]等是否为0/1值?或input$checkGroup变量长度是否仅包含所选值?非常困惑的是如何确定,例如,是否检查了第一个和第三个框......

2 个答案:

答案 0 :(得分:1)

它们被视为一个字符向量,其长度等于复选框的数量。这是一个非常简单的闪亮应用程序,向您展示如何处理read

checkboxGroup

注意应用程序中的值是如何存储的(而不是标签)。因此,如果您选择library(shiny) ui <- fluidPage( checkboxGroupInput("checkGroup", label = h2("Data Sets"), choices = list("Accounts Created" = 1, "Comments" = 2, "Submissions" = 3, "Votes" = 4), selected = NULL), verbatimTextOutput("checkBoxText") ) server <- function(input, output, session) { output$checkBoxText <- renderText({input$checkGroup}) } shinyApp( ui = ui, server = server, options = list(launch.browser = T) ) "Accounts Created"将包含input$checkGroup而不是1

答案 1 :(得分:1)

checkboxGroupInput的输出是一个向量。

当您想要同时选择多个元素时,可以使用它。

为了避免混淆(并避免让我们的反应在每次选择框时都有反应),它最好与动作按钮结合使用:

  1. 完成选择后(一个或多个项目);
  2. 您可以按动作按钮执行。这样可确保仅在用户准备好时才处理用户的选择。
  3. 另外,有时我不想使用列表,而只是一个简单的向量,例如:

    checkboxGroupInput("checkGroup", label = h2("Data Sets"), 
                         choices = c("Accounts Created", "Comments",
                                        "Submissions", "Votes"),
                         selected = NULL)
    

    然后,您可以在服务器端处理具有不同值的字符向量,例如如果选择了前两个框,则input$checkGroup可能等于c("Accounts Created", "Comments"),依此类推。

    也许我在回复以下SO问题时发布的代码可能会有所帮助R Shiny observeEvent issues

    请注意,如果选择了许多元素,您需要有一个合适的治疗管道。例如,if(或switch)仅适用于当时的一个元素,如果您希望一次扫描输出向量一个元素,则它会起作用。如果您的治疗更复杂,您需要仔细考虑。

    如果不清楚,请不要犹豫。