在Shiny服务器中,如果希望在每次按下ActionButton时不覆盖值,可以使用reactiveValues()函数来创建一个响应式的变量,然后在每次循环迭代中更新该变量的值。
具体步骤如下:
values <- reactiveValues(data = NULL)
。values$data <- c(values$data, newValue)
。这样,每次点击ActionButton时,都会将新的值添加到变量中,而不会覆盖之前的值。
以下是一个示例代码:
library(shiny)
ui <- fluidPage(
actionButton("btn", "Click me"),
verbatimTextOutput("output")
)
server <- function(input, output) {
values <- reactiveValues(data = NULL)
observeEvent(input$btn, {
# 在这里执行循环迭代的操作
# 假设newValue是每次迭代的新值
newValue <- runif(1)
# 将新值添加到变量中
values$data <- c(values$data, newValue)
})
output$output <- renderPrint({
# 输出变量的值
values$data
})
}
shinyApp(ui, server)
在这个示例中,每次点击按钮时,都会生成一个随机数,并将其添加到变量中。输出区域会显示所有生成的随机数。
对于Shiny服务器中的For循环,这种方法可以确保每次迭代的值都被保留下来,而不会被覆盖。
领取专属 10元无门槛券
手把手带您无忧上云