Я хотел бы иметь возможность производить другой тип вывода из uiOutput
на основе ранее выбранного, как показано ниже:
ui <- fluidPage(
titlePanel("Dynamically generated user interface components"),
fluidRow(
selectInput("output_type",
label = "Select type of output",
selected = "table",
choices = c("table", "barplot", "graph")
),
uiOutput("diff_outputs")
# textOutput("choice")
)
)
server <- function(input, output){
# output$choice <- renderText({
# switch(
# input$output_type,
# "table" = "you chose table",
# "barplot" = "you chose barplot",
# "graph" = "you chose graph"
# )
#
# })
get_choice <- reactive({input$choice})
output$diff_outputs <- renderUI({
if (is.null(input$output_type))
return()
switch(
# input$output_type,
get_choice(),
"table" = renderTable({head(women)}),
"barplot" = renderPlot({barplot(women$height)}),
"graph" = renderPlot({plot(women$height ~ women$weight)})
)
})
#
output$output_type <- renderText({input$input_type})
}
shinyApp(ui = ui, server = server)
Более простой вывод 'choice' работал должным образом, но ошибка, возвращаемая выше:
Warning: Error in switch: EXPR must be a length 1 vector
[No stack trace available]
Решения для этого очень приветствуются.
В конце концов, я бы тоже хотел, чтобы это было модульным, поэтому любые дополнительные проблемы и решения, связанные с этим, тоже были бы хороши.