R shiny - 生成n个UI元素

时间:2014-06-12 15:30:18

标签: r shiny

标题说这一切真的,我试图想办法创建多个UI元素。

因此,如果我在选择器中有n个元素(数据集) - 这些数据集中的每一个都具有不同的命名列名和不同的长度。我希望这些列名称作为组输入。

我想我可以静态地做这个,如果我知道将会有多少数据集(例如下面的例子) - 但是有没有办法可以迭代地生成checkboxgroupinput呢?

ui.r

library(shiny)
shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Example"),


  sidebarPanel(
    checkboxGroupInput("one", "One:",data_in[[1]]),
    checkboxGroupInput("two", "Two:",data_in[[2]]),

  ),

  mainPanel(

  )
))

1 个答案:

答案 0 :(得分:3)

是的,您可以使用renderUI

data_in <- c("Cylinders" = "cyl",
             "Transmission" = "am",
             "Gears" = "gear")
library(shiny)
runApp(
  list(ui = pageWithSidebar(
    headerPanel("Example"),
    sidebarPanel(
      uiOutput("checkbGroups")
    ),
    mainPanel(
    )
  )
  ,
  server = function(input, output, session){
    output$checkbGroups <- renderUI({
      lapply(1:10, function(x){
        do.call(checkboxGroupInput, list(inputId = x, label = x, choices = data_in))
      }
      )
    }
    )
  }
  )
)

enter image description here