【发布时间】:2016-10-14 13:45:36
【问题描述】:
我正在构建一个相对复杂的应用程序,其中我有动态数量的输入,标题为: d1, d2 .. dn。有一次我想尝试同时处理多个输入:
input[[grep(pattern="d+[[:digit:]]",input)]]
这当然会导致错误:
Must use single string to index into reactivevalues
所以我想知道是否有人知道一种优雅的方式来做这样的事情?
【问题讨论】:
我正在构建一个相对复杂的应用程序,其中我有动态数量的输入,标题为: d1, d2 .. dn。有一次我想尝试同时处理多个输入:
input[[grep(pattern="d+[[:digit:]]",input)]]
这当然会导致错误:
Must use single string to index into reactivevalues
所以我想知道是否有人知道一种优雅的方式来做这样的事情?
【问题讨论】:
您可以在输入中使用名称:
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)
【讨论】:
observeEvent(lapply(grep(pattern = "d+[[:digit:]]", x = names(input), value = TRUE), function(x) input[[x]]), {})