2017-06-08 18 views
0

私はtabsetPanel()を持っています。選択肢が2でcheckboxがオンの場合、私はtabPanel()を隠そうとします。私はそれを行うには、次のコードを試したが、動作しません。光沢のあるタブパネルを非表示

UI

shinyUI(
    fluidPage(
    titlePanel("Hello Shiny!"), 
    sidebarLayout(
    sidebarPanel(
     fluidRow(
     column(5, 
       radioButtons("radio", label = h5("Data uploaded"), 
          choices = list("Aff" = 1, "Cod" = 2, 
              "Ill" = 3),selected = 1) 
     )), 
     checkboxInput("checkbox", "cheb", value = F) 
), 
    mainPanel(
     tabsetPanel(
     tabPanel("Plot", "plot1"), 
     conditionalPanel(
      condition = "input.radio !=2 && input.checkbox == false", 
     tabPanel("Summary", "summary1") 
     ), 
     tabPanel("Table", "table1") 
    ) 
    ) 
) 

) 
) 

サーバー

shinyServer(function(input,output,session){ 

}) 

どのように私はtabPanel()を非表示にできますか?あなたがrenderUI()でそれを行うことができ

+0

この条件が満たされている場合は、非表示にします。 '' input.radio == 2 && input.checkbox == true "'が満たされています。説明は、私が思うコードと一致しません:) – BigDataScientist

+1

[this](https://groups.google.com/d/msg/shiny-discuss/Coe8drGPJbU/5JXdisgVFAAJ) – SBista

+0

:)のようなことを追加できます。これに代わる方法として、 'conditionalPanel()'に近いものを探します。良いアイデア。 – BigDataScientist

答えて

1

renderUI() 以内リストでtabpanels()を作成し、条件付きで三番目に追加: if(input$radio == 2 & !input$checkbox) をし、その後do.call(tabsetPanel, panels)で全体tabsetPanel()を返します。

ui <- shinyUI(
    fluidPage(
    titlePanel("Hello Shiny!"), 
    sidebarLayout(
     sidebarPanel(
     fluidRow(
      column(5, 
       radioButtons("radio", label = h5("Data uploaded"), 
           choices = list("Aff" = 1, "Cod" = 2, 
              "Ill" = 3),selected = 1) 
     )), 
     checkboxInput("checkbox", "cheb", value = F) 
    ), 
     mainPanel(
      uiOutput("summary") 
     ) 
    ) 
) 
) 

server <- shinyServer(function(input,output,session){ 

    output$summary <- renderUI({ 
     panels <- list(
     tabPanel("Plot", "plot1"), 
     tabPanel("Table", "table1")   
    ) 
     if(input$radio == 2 & !input$checkbox) panels[[3]] <- tabPanel("Summary", "summary1") 
     do.call(tabsetPanel, panels) 
    }) 

}) 

shinyApp(ui, server) 
+0

'conditionalPanel'で行うことはできません – AwaitedOne

+0

まずは大歓迎です。あなたの質問について:私はafaik 'conditionalPanel()'がパネルそのものなので、私はそれを疑う。 docu '?conditionalPanel()'を読んだ場合、引数は '... = \t という要素がパネルに含まれます.'という意味です。パネルにパネルを入れようとします。私は、 'renderUI()'がベストプラクティスであると知っています。あなたの研究はあなたに何を示しましたか、とにかくうまくいかないというヒントはありますか? – BigDataScientist

関連する問題