2016-05-09 2 views
0

У меня возникает странная проблема при использовании условных панелей.Условные панели, не показывающие

У меня есть что-то похожее на этот

shinyUI(bootstrapPage(


selectInput(inputId = "graphT", 
       label = "Type of Graph :", 
       choices = c("x","y"), 
       selected = "x"), 


conditionalPanel(
     condition = "input.graphT == 'x'", 
     plotOutput(outputId = "plot1")), 

conditionalPanel(
     condition = "input.graphT == 'y'", 
     splitLayout(
     cellWidths = c("50%", "50%"), 
     plotOutput(outputId = "plot1"), 
     plotOutput(outputId = "plot2") 
     )) 

)) 

Если удалить либо из условий панелей, другие делают, когда я выбрать правильный вариант. Однако, если я покажу, что обе условные панели ничего не показывают, я не получаю никаких ошибок или сообщений, это похоже на то, что я не отправляю никаких данных. Что дает?

ответ

1

Проблема в том, что у вас есть два выхода с одинаковым идентификатором plot1. Если вы изменили в этой порции outputId к plot3

conditionalPanel(
     condition = "input.graphT == 'x'", 
     plotOutput(outputId = "plot1")), 

и делают третий участок на стороне сервера, он будет работать.

Пример:


library(shiny) 
ui <- shinyUI(bootstrapPage(


    selectInput(inputId = "graphT", 
       label = "Type of Graph :", 
       choices = c("x","y"), 
       selected = "x"), 


    conditionalPanel(
    condition = "input.graphT == 'x'", 
    plotOutput(outputId = "plot3")), 

    conditionalPanel(
    condition = "input.graphT == 'y'", 
    splitLayout(
     cellWidths = c("50%", "50%"), 
     plotOutput(outputId = "plot1"), 
     plotOutput(outputId = "plot2") 
    )) 

)) 

server <- function(input, output) { 
output$plot1 <- renderPlot({ 
    plot(1) 
}) 

output$plot2 <- renderPlot({ 
    plot(1:10) 
}) 

output$plot3 <- renderPlot({ 
    plot(1:100) 
}) 
} 

shinyApp(ui, server) 
+0

Благодаря. Я хотел сделать что-то вроде if/else. Представить либо график 1, либо график 1 и 2, но это тоже работает – user697110

Смежные вопросы