我刚刚开始使用闪亮的2天回来,请原谅我,如果这是一个非常天真的问题,但我已经环顾四周,找不到简单的答案。我正在创建一个需要一段时间才能完成的应用。我想通过程序的中间步骤更新输出。程序完成后,我可以打印到输出,但如何打印中间步骤。
例如,在以下最小应用程序代码中,它会在10秒后打印数字1到10但是如何在每隔一秒间隔打印一次?
library(shiny)
runApp(list(
ui = basicPage(
h2('Multiple output'),
actionButton("goButton", "Go!"),
textOutput("out")
),
server = function(input, output) {
output$out = renderText({
if(input$goButton == 1 ) {
msg = NULL
for(i in 1:10) {
Sys.sleep(1)
msg = paste(msg,i)
}
msg
}
})
}
))
答案 0 :(得分:1)
这在闪亮的论坛上是一个非常受欢迎的请求,Stack Overflow的边缘不足以显示详细的答案(原谅,费马)。诀窍是使用javascript检查类shiny-busy
。
var isBusy = $('html').hasClass('shiny-busy');
Joe Cheng有一个样本
https://gist.github.com/jcheng5/4495659
您也可以在闪亮的论坛中搜索“进度条”。
答案 1 :(得分:1)
https://stackoverflow.com/a/20290366/239923
您可以考虑使用ShinySky软件包中的警报来显示警报吗?
答案 2 :(得分:1)
感谢您的帮助。我发现这个帖子最符合我的要求Update graph/plot with fixed interval of time
我实际上最终使用了invalidateLater http://www.inside-r.org/packages/cran/shiny/docs/invalidateLater