2014-06-12 92 views
1

标题说明了一切,我试图想出一种创建多个UI元素的方法。R闪亮 - 生成n个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(

) 
)) 

回答

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