相关疑难解决方法(0)

保存foreach dopar loop的多个输出

我想知道是否/如何作为foreach dopar循环的一部分返回多个输出.

我们来看一个非常简单的例子.假设我想将2个操作作为foreach循环的一部分,并且希望为每个值返回或保存两个操作的结果i.

对于只返回一个输出,它将如下所示:

library(foreach)
library(doParallel)
cl <- makeCluster(3)
registerDoParallel(cl)

oper1 <- foreach(i=1:100000) %dopar% {
    i+2
}
Run Code Online (Sandbox Code Playgroud)

oper1将是一个包含100000个元素的列表,每个元素都是i+2i的每个值的操作结果.

假设现在我想分别返回或保存两个不同操作的结果,例如i+2i+3.我尝试了以下方法:

oper1 = list()
oper2 <- foreach(i=1:100000) %dopar% {
    oper1[[i]] = i+2
    return(i+3)
}
Run Code Online (Sandbox Code Playgroud)

希望结果i+2将保存在列表中oper1,并且i+3将返回第二个操作的结果foreach.但是,列表中没有任何内容oper1!在这种情况下,只有i+3从循环返回的结果.

有没有办法在两个单独的列表中返回或保存两个输出?

parallel-processing foreach r

24
推荐指数
2
解决办法
3万
查看次数

标签 统计

foreach ×1

parallel-processing ×1

r ×1