更新复选框组输入不适用于多个复选框

时间:2018-02-14 19:32:21

标签: r shiny shinydashboard

为什么当选择了多个复选框时,此const user = function(req, res){ // do stuff req.log(['info'], 'some log info here'); }; module.exports = { user, }; 代码不起作用。如果选中上述组中的一个复选框,则下面的框应更新以显示更具体的条目。但如果在顶部选择了多个复选框,则代码将失败。谁知道问题可能是什么?

从此处复制或bitbucket:https://bitbucket.org/snippets/afolabicrystal/deyay5

updateCheckboxGroupInput()

1 个答案:

答案 0 :(得分:3)

问题是你一直在使用else if;只要其中一个ifs被评估,其余的就会被跳过。基本上你是说:如果x是真的,那么你做。但是如果x不是真的(否则),检查z是否为真等等......所以如果x实际为真,则从不评估z。我希望这种解释是有道理的。

此外,您可以通过检查三个条件(电视,手机和平板电脑)来简化代码,如果选中该复选框,则将选项添加到矢量。

下面给出一个工作实例。希望这有帮助!

enter image description here

ui <- fluidPage(
  p("The first checkbox group controls the second"),
  checkboxGroupInput("inCheckboxGroup", "Device Class",
                     c("TV", "Mobile", "Tablet")),
  checkboxGroupInput("inCheckboxGroup2", "Device Types",
                     c())
)


server <- function(input, output, session) {
  observe({
    x <- input$inCheckboxGroup

    choices=c()
    if ('TV' %in% x) 
      choices = c(choices,c("Amazon TV", "Apple TV"))
    if("Mobile" %in% x) 
      choices =c(choices, c("Android Phone", "iPhone"))
    if("Tablet" %in% x) 
      choices = c(choices,c("iPad", "Android Tablet"))

    updateCheckboxGroupInput(session, "inCheckboxGroup2",
                             label = paste("Device Types", length(x)),
                             choices=choices,
                             selected = choices
    )
  })
}
shinyApp(ui, server)