2016-07-11 12 views
0

Ich verwende conditionalPanel, um eine Benutzeroberfläche zu erstellen, die dem Benutzer zuerst ein Bedienfeld mit Optionen anzeigt und anschließend ein Dashboard mit Registerkarten unter Verwendung von tabsetPanel anzeigt. Der einfache Vorgang des Hinzufügens eines weiteren tabPabel, wie unten gezeigt, verhindert irgendwie, dass die Datei server.R ausgeführt wird. Ich habe getestet mit Druckanweisungen. Es scheint, als ob die Shiny-App bricht, aber ich kann keinen Syntaxfehler oder einen Grund dafür finden.R Shiny conditionalPanel ungerades Verhalten

conditionalPanel(
    condition = "output.panel == 'view.data'", 
    tabsetPanel(id = "type", 
    tabPanel("Script", value = "script", 
     fluidPage(
     br(), 
     fluidRow(
      column(3, uiOutput("script.name")), 
      column(3, uiOutput("script.message")) 
     ), 
     hr(), 
     plotlyOutput("plotly") 
    ) 
    ), 
    tabPanel("Location", value = "location", 
     fluidPage(
     br(), 
     fluidRow(
      # column(3, uiOutput("id.range")) 
     ), 
     hr(), 
     plotlyOutput("plot") 
    ) 
    ) 
    # when this tabPanel is uncommented it doesn't work 
    # ,tabPanel("Accelerometer", value = "accelerometer", 
    # fluidPage(
    #  br(), 
    #  hr(), 
    #  plotlyOutput("plot") 
    # ) 
    #), 
) 
) 

Antwort

0

Es ist andernfalls nicht wegen der zusätzlichen tabPanel, es scheitern, weil es einen doppelten Bezug auf output$plot enthält. Jeder Ausgang der Funktion server kann nur einmal angezeigt werden. Zum Beispiel läuft das, aber fehl, wenn die duplizierten Linie ist unkommentiert:

library(shiny) 

ui <- shinyUI(fluidPage(
    # textOutput('some_text'), 
    textOutput('some_text') 
)) 

server <- shinyServer(function(input, output){ 
    output$some_text <- renderText('hello world!') 
}) 

runApp(shinyApp(ui, server)) 

Eine einfache Lösung ist es, die Ergebnisse der render* Funktion einer lokalen Variablen zu speichern, die Sie dann auf zwei Ausgänge speichern:

library(shiny) 

ui <- shinyUI(fluidPage(
    textOutput('some_text'), 
    textOutput('some_text2') 
)) 

server <- shinyServer(function(input, output){ 
    the_text <- renderText('hello world!') 
    output$some_text <- the_text 
    output$some_text2 <- the_text 
}) 

runApp(shinyApp(ui, server)) 
+0

danke! Das war das Problem. – asmalluser