如何使用 shiny:renderUI 和 shiny:UiOutput 生成带有闪亮模块的条件输出
How to use shiny:renderUI and shiny:UiOutput to produce conditional outputs with shiny modules
这是 的轻微扩展。
注意:在识别出代码中的拼写错误并更正后,此解决方案现在可以使用。我希望这是一个有用的模式,其他人也可以使用。
我希望通过 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
目前是空白的。
如果找到解决此类问题的方法,那将非常有帮助。
我认为只需要非常小的修改,但我对使用 shiny 模块还是个新手。
它有效,但你有一个错字:taglist
应该是 tagList
。
这是
注意:在识别出代码中的拼写错误并更正后,此解决方案现在可以使用。我希望这是一个有用的模式,其他人也可以使用。
我希望通过 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
目前是空白的。
如果找到解决此类问题的方法,那将非常有帮助。
我认为只需要非常小的修改,但我对使用 shiny 模块还是个新手。
它有效,但你有一个错字:taglist
应该是 tagList
。