R中的并行计算,求和变量

时间:2017-11-28 16:59:03

标签: r parallel-processing

我对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创建一个函数以获得所需的输出,但我不知道如何...

有人可以帮助我吗?

提前致谢!

1 个答案:

答案 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)