这是对先前问题的轻微扩展。
注意:此解决方案现在在代码中识别并更正错字后有效。我希望这是一个有用的模式,其他人也可以使用。
我希望通过 显示不同的输出类型uiOutput
,但是在模块化框架中。
到目前为止,我所拥有的是:
module_ui <- function(id){
ns <- NS(id)
tagList(
selectInput(ns("output_type"),
label = "Select type of output",
selected = "table",
choices = c("table", "barplot", "graph")
),
uiOutput(ns("diff_outputs"))
)
}
module_server <- function(input, output, session){
ns <- session$ns
output$table <- renderTable({head(women)})
output$barplot <- renderPlot({barplot(women$height)})
output$scatterplot <- renderPlot({plot(women$height ~ women$weight)})
output_selected <- reactive({input$output_type})
output$diff_outputs <- renderUI({
if (is.null(output_selected()))
return()
switch(
output_selected(),
"table" = tableOutput(ns("table")),
"barplot" = plotOutput(ns("barplot")),
"graph" = plotOutput(ns("scatterplot"))
)
})
}
ui <- fluidPage(
titlePanel("Dynamically generated user interface components"),
fluidRow(
module_ui("module")
)
)
server <- function(input, output){
callModule(module_server, "module")
}
shinyApp(ui = ui, server = server)
问题是uiOutput
当前是空白的。
如果找到解决此类问题的方法,那确实会非常有帮助。
我认为只需要非常小的修改,但我对使用闪亮的模块仍然很陌生。