0
在Shiny中,我使用renderUI
和tagList
在服务器元素中动态创建UI,然后使用uiOutput
显示它。它的工作原理,但我想分解成uiOutput
的内容。我怎么做?uiOutput中闪烁的列
下面是Shiny图库中的(稍微缩写的)Dynamic UI示例。请注意0如何包含最终显示为一列的tagList
,但我希望它显示为两列。
请注意,我不能拨打renderUI
内部的column
。
library(shiny)
server <- shinyServer(function(input, output) {
output$ui <- renderUI({
if (is.null(input$input_type)) {return()}
tagList(list(div("Want this to be left column"),
switch(input$input_type,
"slider" = sliderInput("dynamic", "Want this to be right column",
min = 1, max = 20, value = 10),
"text" = textInput("dynamic", "Want this to be right column",
value = "starting value"),
"numeric" = numericInput("dynamic", "Want this to be right column",
value = 12),
"checkbox" = checkboxInput("dynamic", "Want this to be right column",
value = TRUE))))
})
output$input_type_text <- renderText({input$input_type})
output$dynamic_value <- renderPrint({str(input$dynamic)})
})
ui <- shinyUI(fluidPage(
titlePanel("Dynamically generated user interface components"),
wellPanel(selectInput("input_type", "Input type",
c("slider", "text", "numeric", "checkbox")
)),
wellPanel(uiOutput("ui")),
wellPanel(
tags$p("Input type:"),
verbatimTextOutput("input_type_text"),
tags$p("Dynamic input value:"),
verbatimTextOutput("dynamic_value")
)
))
shinyApp(ui = ui, server = server)