Foreach .combine函数以合并R中的列表

Muc*_*eam 3 parallel-processing foreach loops r

以下是我试图在R中运行的并行循环:

cl <- makeCluster(30,type="SOCK")

registerDoSNOW(cl)


results <- foreach (i = 1:30, .combine='bindlist', .multicombine=TRUE) %dopar% {
           test <- i
           test <- as.list(test)
           list(test)
         }

stopCluster(cl)
Run Code Online (Sandbox Code Playgroud)

我的代码的输出始终是一个列表,我想将列表组合成一个大列表。因此,我编写了以下.combine函数:

bindlist <- function(x,y,...){
  append(list(x),list(y),list(...))
}
Run Code Online (Sandbox Code Playgroud)

当我进行多次运行时,我尝试使用变量的数量更改...。但是,它不起作用。我该如何重写.combine函数,使其可以与更改变量数一起使用?

Mat*_*Aff 5

您是否考虑过使用“ c”

results <- foreach (i = 1:4, .combine='c', .multicombine=TRUE) %dopar% {
  test <- i
  test <- as.list(test)
  list(test)
}
Run Code Online (Sandbox Code Playgroud)

如果这为您的结果增加了一个多余的“级别”,则可以使用“取消列表”删除该级别。

unlist(results, recursive = FALSE)
Run Code Online (Sandbox Code Playgroud)