使用foreach时如何使闪亮的进度条工作

问题描述

我在闪亮的应用程序中使用 foreach 包来并行运行操作。我不知道如何使常规闪亮的进度条正常工作。下面是一个说明我的问题的简单示例:

library(shiny)
library(foreach)
library(doParallel)
library(DT)

app <- shinyApp(
    ui = fluidPage(
        DT::dataTableOutput("table")
    ),server = function(input,output) {
        
        output$table <- renderDataTable({
            
            withProgressShiny(message = "Calculation in progress",detail = "This may take a while ...",value = 0,{
                output <- data.frame()
                cores.detected <- parallel::detectCores()
                cl <- parallel::makeCluster(cores.detected - 1)
                doParallel::registerDoParallel(cl)
                
                output <- foreach(i = 1:10000,.combine = 'rbind') %dopar% {
                    output[1,1] = i
                    output[1,2] = round(sqrt(i),2)
                    return(output)
                    
                    
                    incProgress(1/10000,detail = paste0("Calculation progress: ",round(i/10000*100,0),"%"))
                    Sys.sleep(0.1)
                }
                parallel::stopCluster(cl)
            })
            
            DT::datatable(output)
        
        })
    }
)
            
runApp(app)
   

在闪亮之外我会使用 doSNow 包,但据我所知它不适用于闪亮 任何提示将不胜感激

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)