2017-08-21 10 views
1

オブジェクトの作成時またはボタン(理想的にはオブジェクト)の作成時に動的にmenuItemを生成しようとしています。私は複数の方法を試してきましたが、清潔で実用的な解決策を見つけ出すことはできません。R Shinyオブジェクトを作成した後にmenuItemを作成/ボタンをクリック

私は以下のコードがたくさんあるサンプルコード含まなければならない。私は2つのボタンとタブ、1(を示す)、及び(隠れ)プロットを有する別を有する上方

ui <- fluidPage(
    dashboardPage(
     dashboardHeader(title = "text"), 
     dashboardSidebar(
      sidebarMenu(id = 'MenuTabs', 
         menuItem("Tab1", tabName = "tab1", selected = TRUE) 
         # menuItem("Tab1", tabName = "tab2") 
      ) 
     ), 
     dashboardBody(
      tabItems(
       tabItem("tab1", 
         actionButton("newplot", "New plot")), 
       tabItem("tab2", 
         plotOutput('Plot')) 
      ) 
     ) 
    ) 
) 


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

    output$Plot <- renderPlot({ 
     input$newplot 
     cars2 <- cars + rnorm(nrow(cars)) 
     plot(cars2) 
    }) 

} 


shinyApp(ui, server) 

を。

  • ボタンをクリックするとプロットが表示される非表示のタブを取得するにはどうすればよいですか?ボタンを想定したボーナスポイント
  • は、代わりに私はそれを解決するために管理している

おかげ

+0

これは役に立ちますか? http://deanattali.com/blog/advanced-shiny-tips/#hide-tab – Phil

+0

新しい機能[insertTab](https://shiny.rstudio.com/reference/shiny/latest/insertTab.html)があります光沢のある、それは解決策かもしれない。 –

+0

タブ関連の機能はmenuItemsと同じように機能するとは思いません。まあ、私は彼らが同じように動作するように見えることはできません:/ – Sharma

答えて

1

とオブジェクトの作成与えられた隠されたメニューアイテムを示すことができるどのようにオブジェクトを作成しました。以下は、ボタンを表示してmenuItemを作成するコードです。です。

ui <- fluidPage(
    dashboardPage(
     dashboardHeader(title = "text"), 
     dashboardSidebar(
      sidebarMenu(id = 'MenuTabs', 
         menuItem("Tab1", tabName = "tab1", selected = TRUE), 
         # menuItem("Tab1", tabName = "tab2") 
         uiOutput('ui') 
      ) 
     ), 
     dashboardBody(
      tabItems(
       tabItem("tab1", 
         actionButton("newplot", "New plot"), 
         actionButton("show", "Show")), 
       tabItem("tab2", 
         plotOutput('Plot')) 
      ) 
     ) 
    ) 
) 


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

    output$Plot <- renderPlot({ 
     input$newplot 
     # Add a little noise to the cars data 
     cars2 <- cars + rnorm(nrow(cars)) 
     plot(cars2) 
    }) 


    output$ui <- renderUI({ 
     if(input$show == 0) return() 
     print(input$show) 
     sidebarMenu(id = 'MenuTabs', 
        menuItem("Tab1", tabName = "tab2") 
     ) 
    }) 
} 


shinyApp(ui, server) 
関連する問題