【发布时间】:2019-06-29 03:48:06
【问题描述】:
我正在尝试使用 doParallel 后端在并行 foreach 循环中使用标准 R 闪亮进度条。但是,这会导致以下错误消息:
警告:{中的错误:任务 1 失败 -“'session' 不是 ShinySession 对象。”
代码(最小工作示例)
library(shiny)
library(doParallel)
ui <- fluidPage(
actionButton(inputId = "go", label = "Launch calculation")
)
server <- function(input, output, session) {
workers=makeCluster(2)
registerDoParallel(workers)
observeEvent(input$go, {
Runs=c(1:4)
Test_out=foreach(i=Runs, .combine=cbind, .inorder=TRUE, .packages=c("shiny"),.export=c("session")) %dopar% {
pbShiny = shiny::Progress$new()
pbShiny <- Progress$new(session,min = 0, max = 10)
on.exit(pbShiny$close())
test_vec=rep(0,100)
for(i in 1:10){
test_vec=test_vec+rnorm(100)
pbShiny$set(message="Simulating",detail=paste(i),
value=i)
Sys.sleep(0.2)
}
}
})
}
shinyApp(ui = ui, server = server)
如果我按顺序运行 foreach 循环(使用 registerDoSEQ()),代码就会运行。 有谁知道如何解决这个问题?
总体目标
- 使用 doParallel 在并行 foreach 循环中向用户显示进度 闪亮的后端
- 用户应该知道工人的数量和 每个工人的进度和/或整体进度
在以下链接下有一个类似的问题,但由于没有提供工作示例,因此没有得到解决:
【问题讨论】:
标签: r foreach shiny progress-bar doparallel