【发布时间】:2020-07-29 06:26:39
【问题描述】:
我的闪亮应用中有 10 个操作按钮。我正在尝试创建一个循环,但我遇到了反应值的问题。我该如何解决?
这是按钮 1 的代码:
server <- function(input, output, session)
{
value1 <- reactiveVal(0)
observeEvent(input$minus1, {newValue1 <- value1() - 1)
value1(newValue1)})
observeEvent(input$plus1, {newValue1 <- (value1() + 1)
value1(newValue1)})
output$value1 <- renderUI(actionBttn("result1", label = value1()))
}
我试过了,但它似乎不起作用:
server <- function(input, output, session)
{
for (i in 1:10)
{
paste0("value", i) <- reactiveVal(0)
observeEvent(input$paste0("minus",i), {paste0("newValue", i) <- (paste0("value", i,"()") - 1)
paste0("value", i)(paste0("newValue", i))})
observeEvent(input$paste0("plus",i), {newValue1 <- (paste0("value", i,"()") + 1)
paste0("value", i)(paste0("newValue", i))})
output$paste0("value", i) <- renderUI(actionBttn(paste0("result", i), label = paste0("value", i,"()")))
}
}
【问题讨论】:
-
嗨,你应该看看
modules,它们降低了在输入名称之间迷路的风险,并且有助于创建循环 -
使用
lapply以编程方式启动observeEvents,而不是for循环。喜欢,lapply(1:10, function(i){ .......})