我正在构建一个相对复杂的应用程序,我的动态输入数量标题为: d1,d2 .. dn。有一次,我想尝试使用以下方法同时处理多个输入:
input[[grep(pattern="d+[[:digit:]]",input)]]
当然导致错误:
Must use single string to index into reactivevalues
所以我想知道是否有人知道这样做的优雅方式?
答案 0 :(得分:5)
您可以在输入中使用名称:
grep(pattern = "d+[[:digit:]]", x = names(input), value = TRUE)
一个工作示例:
library("shiny")
ui <- fluidPage(
fluidRow(
column(
width = 6,
lapply(
X = 1:6,
FUN = function(i) {
sliderInput(inputId = paste0("d", i), label = i, min = 0, max = 10, value = i)
}
)
),
column(
width = 6,
verbatimTextOutput(outputId = "test")
)
)
)
server <- function(input, output){
output$test <- renderPrint({
sapply(grep(pattern = "d+[[:digit:]]", x = names(input), value = TRUE), function(x) input[[x]])
})
}
shinyApp(ui = ui, server = server)