如何使用用户输入更新闪亮应用程序中的输出

时间:2013-11-28 04:03:08

标签: r shiny

我刚刚开始使用闪亮的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
      }
    })
  }
))

3 个答案:

答案 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