2016-08-04 8 views
1

以下のコードは、それぞれ同じチェックボックスパネルを含む2つのタブを持つUIを示しています。他のパネルが更新されている場合はパネルを更新したい場合はそのパネルを更新します。サーバーではobserve関数が使用されていますが、なんらかの理由でtab1が変更されていてもそれ以外の場合はtab2のcheckBoxGroupが更新されます。誰もこれを解決するためのアイデアを持っていますか?R Shiny:同じcheckBoxGroupを2回使用

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) 

答えて

2

同じidのウィジェットを2つ使用しないでください。その代わりに、variable1variable2と言って、2つの異なる観察者を作成してチェックボックスを更新してください。

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) 
+1

ありがとうございます! – WhoKnows19

関連する問題