这是对an earlier question的扩展。
注意:现在,在代码中识别出错字并更正后,此解决方案现在可以工作。我希望这是其他人也可以使用的有用模式。
我希望通过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
当前为空。
如果找到解决此类问题的方法,那将确实非常有帮助。
我认为只需要很小的修改,但是使用闪亮的模块仍然是我的新手。
答案 0 :(得分:1)
可以,但是您有错字:taglist
应该是tagList
。