闪亮的进度条只会延误进度

时间:2017-07-26 15:16:26

标签: r shiny progress-bar

我使用Shiny&withProgress功能进行长时间计算:https://shiny.rstudio.com/reference/shiny/latest/withProgress.html

然而,它只是让系统进入睡眠状态,我必须等待Sys.sleep(xx)完成才能实际进行计算。因此,我没有看到使用某些东西使得计算过程看起来长两倍。

是否有一些其他进度条方法没有使用Sys.sleep(0.25),以便在进度状态显示期间实际进行计算?

1 个答案:

答案 0 :(得分:7)

你不应该在那里Sys.sleep(0.25),这只是让进度条工作的一个例子。

如果你有一个函数必须总结`10.000.000随机数15次,你可以这样做:

ui <- fluidPage(
  plotOutput("plot")
)

server <- function(input, output) {
  output$plot <- renderPlot({
    withProgress(message = 'Calculation in progress',
                 detail = 'This may take a while...', value = 0, {
                   for (i in 1:15) {
                     incProgress(1/15)
                     sum(runif(10000000,0,1))
                   }
                 })
    plot(cars)
  })
}

shinyApp(ui, server)

第二个例子:

library(shiny)

ui <- fluidPage(
  plotOutput("plot")
)

test_fun <- function()
{
  for (i in 1:15) {
    incProgress(1/15)
    sum(runif(10000000,0,1))
  }
}

server <- function(input, output) {
  output$plot <- renderPlot({
    withProgress(message = 'Calculation in progress',
                 detail = 'This may take a while...', value = 0, {
                      test_fun()
                 })
    plot(cars)
  })
}

shinyApp(ui, server)