我对R中的并行计算很新,我希望(原始问题的非常简化版本)以下列方式向X,Y和Z添加新值:
library(foreach)
library(doParallel)
X <- 0
Y <- 0
Z <- 0
cores <- detectCores()
cl <- makeCluster(cores[1] - 1) #not to overload your computer
registerDoParallel(cl)
A <- foreach(i = 1:3, .combine = data.frame) %dopar% {
X = X + i
Y = Y + i + 2
Z = Z + i + 3
}
stopCluster(cl)
我希望A = [6 12 15]
(6 = 1 + 2 + 3; 12 =(1 + 2)+(2 + 2)+(3 + 2); 15 =(1 + 3)+( 2 + 3)+(3 + 3)),但不幸的是我得到了这个结果A = [4 5 6]
。
我试图在foreach的文档的帮助下解决这个问题,我想我应该自己为.combine创建一个函数以获得所需的输出,但我不知道如何...
有人可以帮助我吗?
提前致谢!
答案 0 :(得分:0)
我自己找到了!以下代码返回所需的输出
库(的foreach)
库(doParallel)
X < - 0
Y = 0
Z = 0
芯= detectCores()
cl&lt; - makeCluster(cores [1] -1)#not to your your computer
registerDoParallel(CL)
A = foreach(i = 1:3,。combine =&#39; +&#39;)%dopar%{
X = X + i
Y = Y + i + 2
Z = Z + i + 3
返回(C(X,Y,Z))
}
STOPCLUSTER(CL)