R shiny:如何构建输入元素列表,然后 return 它们作为单个元素在 UI 中呈现?
R shiny: how to build a list of input elements and then return them as a single element for rendering in the UI?
我想生成一组 R 闪亮滑块输入,例如:
label1:
<-------------slider1------------->
label2:
<-------------slider2------------->
对于一些可变数量的输入。但是,我需要 return 所有生成的元素作为单个元素或组件用于更高级别的 UI 函数,所以我正在考虑将整个东西包装在 div()。我被困在这一点上:
lapply(
listOfSliderLabels, function(sliderLabel){
#build a new slider: sliderInput(...)
#how do I add this new slider to something like a div, and return the div?
})
do.call
非常适合以编程方式构建输入。这是一个将它与 lapply
一起使用以从 args 列表构建滑块输入的示例:
sliderInputData <- list(
list(inputId = "slider1", label = "slider1", min = 1, max = 5, value = 3),
list(inputId = "slider2", label = "slider2", min = 2, max = 5, value = 4),
list(inputId = "slider3", label = "slider3", min = 3, max = 5, value = 5)
)
buildSliderInputs <- function(inputData) {
inputs <- lapply(inputData, function(args) {
do.call(sliderInput, args)
})
do.call(div, inputs)
}
ui <- fluidPage(
buildSliderInputs(sliderInputData)
)
server <- function(input, output, session) {}
shinyApp(ui, server)
我想生成一组 R 闪亮滑块输入,例如:
label1:
<-------------slider1------------->
label2:
<-------------slider2------------->
对于一些可变数量的输入。但是,我需要 return 所有生成的元素作为单个元素或组件用于更高级别的 UI 函数,所以我正在考虑将整个东西包装在 div()。我被困在这一点上:
lapply(
listOfSliderLabels, function(sliderLabel){
#build a new slider: sliderInput(...)
#how do I add this new slider to something like a div, and return the div?
})
do.call
非常适合以编程方式构建输入。这是一个将它与 lapply
一起使用以从 args 列表构建滑块输入的示例:
sliderInputData <- list(
list(inputId = "slider1", label = "slider1", min = 1, max = 5, value = 3),
list(inputId = "slider2", label = "slider2", min = 2, max = 5, value = 4),
list(inputId = "slider3", label = "slider3", min = 3, max = 5, value = 5)
)
buildSliderInputs <- function(inputData) {
inputs <- lapply(inputData, function(args) {
do.call(sliderInput, args)
})
do.call(div, inputs)
}
ui <- fluidPage(
buildSliderInputs(sliderInputData)
)
server <- function(input, output, session) {}
shinyApp(ui, server)