我使用Shiny&withProgress功能进行长时间计算:https://shiny.rstudio.com/reference/shiny/latest/withProgress.html
然而,它只是让系统进入睡眠状态,我必须等待Sys.sleep(xx)完成才能实际进行计算。因此,我没有看到使用某些东西使得计算过程看起来长两倍。
是否有一些其他进度条方法没有使用Sys.sleep(0.25),以便在进度状态显示期间实际进行计算?
答案 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)