2017-08-21 3 views
1

Ich versuche ein MenuItem bei der Erstellung eines Objekts oder Klick auf eine Schaltfläche dynamisch zu erzeugen (Ideal Objekt). Ich habe mehrere Methoden ausprobiert und finde keine saubere, funktionierende Lösung.R Shiny create menuItem nachdem das Objekt erstellt wurde/Taste geklickt

Ich habe eine Menge Code, so unten sind Beispielcode enthalten:

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) 

Above Ich habe 2 Registerkarten, 1 mit einem Knopf ( gezeigt), und eine andere mit einem Grundstück ( versteckt) .

  • Wie kann ich die ausgeblendete Registerkarte mit dem Plot erscheinen, wenn Sie auf die Schaltfläche klicken?
  • für Bonuspunkte, erstellt die Schaltfläche stattdessen unter der Annahme, ein Objekt, wie ich die versteckte menuItem

Dank

+0

Könnte das helfen? http://deanattali.com/blog/advanced-shiny-tips/#hide-tab – Phil

+0

Es gibt eine neue Funktion [insertTab] (https://shiny.rstudio.com/reference/shiny/latest/insertTab.html) in glänzend, was eine Lösung sein könnte. –

+0

Ich glaube nicht, dass die tab-bezogenen Funktionen mit menuItems genauso funktionieren. Nun, ich kann sie nicht dazu bringen, gleich zu arbeiten: – Sharma

Antwort

1

Ich habe es geschafft, das Erstellen des Objekts gegeben zeigen könnte, es zu lösen. Unten ist der Code, der durch Drücken einer Taste show ein Menüelement erstellt.

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)