R:使用同一复选框组两次

R:使用同一复选框组两次,r,checkbox,shiny,R,Checkbox,Shiny,下面的代码显示了一个包含两个选项卡的UI,每个选项卡都包含相同的复选框面板。我想一个面板更新,如果另一个更新,反之亦然。在服务器中使用了“观察”功能,但由于某些原因,如果tab1发生更改,它只会更新tab2上的复选框组,而不是相反。有人对如何解决这个问题有想法吗 library(shiny) ui <- shinyUI( navbarPage("tabs", tabPanel("tab1",

下面的代码显示了一个包含两个选项卡的UI,每个选项卡都包含相同的复选框面板。我想一个面板更新,如果另一个更新,反之亦然。在服务器中使用了“观察”功能,但由于某些原因,如果tab1发生更改,它只会更新tab2上的复选框组,而不是相反。有人对如何解决这个问题有想法吗

   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)
库(闪亮)

ui您不应该有两个具有相同
id
的小部件。相反,只需调用它们,比如说,
variable1
variable2
,并创建两个不同的观察者来更新复选框

    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)
库(闪亮)

感谢匿名用户!我们可以对其他小部件执行相同的操作吗?