如何解决结合进度条等待未来在 Shiny 中完成
我在 R 中有一个很长的任务,需要进行大量计算并写出几个文件。这个函数是从 Shiny-reactive 中调用的。由于花费了太多时间,我想在多个进程上并行化它,但同时我想为最终用户包含一个进度条。我密切关注这篇使用 futures
: Using standard R shiny progress bar in parallel foreach calculations .
然而:我的函数创建的文件稍后用于在另一个反应中做一些进一步的处理。不知何故,我无法让这第二个反应性等到我的未来完全完成 - 它已经尝试读取尚未存在或不完整的文件。我如何告诉第二个反应性等待未来完成?
到目前为止我的代码:
library(promises)
library(future)
library(ipc)
plan(multisession)
r1 <- eventReactive(input$go_Button,{
Runs <- 1:3 #3 parallel runs
prog <- list() #Setup for Progressbar
for (j in Runs) {
prog[[j]] <- AsyncProgress$new(message = "Calculation")
future_promise({
for (k in 1:length(rawdata_entries)) {
prog[[j]]$inc(1 / length(rawdata_entries))
<<< VERY LONG TASK THAT CREATES SEVERAL FILES >>>
}
prog[[j]]$close()
}) # end of future_promise
} # end of for loop
return(list("Done"=TRUE))
}) # end of eventReactive
r2 <- reactive({
if (r1()$Done == TRUE) { #my naive approach that doesn't work
<<<do some further processing with the files r1() created >>>
<<< creates the data-frame "some_results" >>>
return(some_result)
}
})
我想实现的最重要的事情是:
我的错误在哪里/是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。