繁体   English   中英

R闪亮:两次使用相同的checkBoxGroup

[英]R Shiny: Use same checkBoxGroup twice

下面的代码显示了一个带有两个选项卡的UI,每个选项卡包含相同的复选框面板。 如果另一个面板已更新,我希望一个面板更新,反之亦然。 在服务器中使用了观察功能,但由于某些原因,它仅在更改了tab1时才更新tab2上的checkBoxGroup,反之则不然。 有人对如何解决这个问题有想法吗?

   library(shiny)

    ui <- shinyUI(
      navbarPage("tabs",           
                 tabPanel("tab1", 
                          fluidPage(
                            sidebarPanel(
                              checkboxGroupInput("variable", "variable:",list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"), selected = list("1"="1"))
                            )
                          )),
                 tabPanel("tab2", 
                          fluidPage( 
                            sidebarPanel(
                              checkboxGroupInput("variable", "variable:",list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"), selected = list("1"="1"))
                            )
                          )
                 )
      )
    )

    server <- function(input, output, session) {
      observe({
        updateCheckboxGroupInput("variable","variable:",list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"),selected=input$variable)
      })

    }

    shinyApp(ui = ui, server = server)

您不应有两个具有相同id小部件。 而不是仅仅调用它们,例如, variable1variable2并创建两个不同的观察者,这些观察者将更新复选框。

    library(shiny)

ui <- shinyUI(
  navbarPage("tabs",           
             tabPanel("tab1", 
                      fluidPage(
                        sidebarPanel(
                          checkboxGroupInput("variable1", "variable:",
                                             list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"), 
                                             selected = list("1"="1"))
                        )
                      )),
             tabPanel("tab2", 
                      fluidPage( 
                        sidebarPanel(
                          checkboxGroupInput("variable2", "variable:",
                                             list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"), 
                                             selected = list("1"="1"))
                        )
                      )
             )
  )
)

server <- function(input, output, session) {
  observe({
    # added 'session'
    updateCheckboxGroupInput(session, "variable1", 
                             choices = list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"),
                             selected = input$variable2)
  })

  observe({
    updateCheckboxGroupInput(session, "variable2", 
                             choices = list("1" = "1","2" = "2","3" = "3","4" = "4","5" = "5"),
                             selected = input$variable1)
  })

}

shinyApp(ui = ui, server = server)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM