【发布时间】:2020-01-24 13:56:18
【问题描述】:
我是 Shiny 的新手,遇到了一个我找不到答案的问题。基本上,我有一个闪亮的应用程序,它在循环中进行一些长时间的计算,我希望它每隔几次迭代输出一个“进度报告”。但是,即使我在循环中重新分配了我的反应变量,输出也不会更新,直到循环(或整个函数?)完成。
这是我的意思的简化测试用例:
library(shiny)
# Basic interface
ui <- fluidPage(
actionButton("run", "Run"),
textOutput("textbox")
)
# Basic server with loop
server <- function(input, output) {
textvals=reactiveValues(a=0)
observeEvent(input$run, {
for(i in 1:10){
textvals$a=i # Expect output to update here, but doesn't
Sys.sleep(0.1) # Slight pause so isn't instantaneous
}
})
output$textbox <- renderText({
textvals$a
})
}
# Run the application
shinyApp(ui = ui, server = server)
我希望显示会在循环执行时更新 1、2、3、... 10。相反,它只是直接从 0 跳到 10。如何在循环的中途强制更新?
谢谢。
【问题讨论】: