【发布时间】:2016-08-02 19:03:40
【问题描述】:
我有一个for 循环,我想并行运行它,所以我使用foreach 来执行此操作。
我的循环的一个输出是一个包含所有迭代结果的矩阵。如果我使用for循环,那么这个矩阵是顺序更新的,最后可以输出。但是,当使用foreach 时,它似乎无法更新此内容。
例如,我整理了一个简单的例子来说明我的观点。
# foreach example - does not update DF matrix.
cl=makeCluster(4)
registerDoParallel(cl)
DF=matrix(NA,ncol=5,nrow=10)
foreach(i=1:10) %dopar% {
DF[i,1]=i*1
DF[i,2]=i*2
DF[i,3]=i*3
DF[i,4]=i*4
DF[i,5]=i*5
}
# for loop - Updates DF and produces complete output.
DF=matrix(NA,ncol=5,nrow=10)
for(i in 1:10) {
DF[i,1]=i*1
DF[i,2]=i*2
DF[i,3]=i*3
DF[i,4]=i*4
DF[i,5]=i*5
}
我感觉我可能需要在foreach 命令中指定DF 数据框,就像我需要对使用的任何包做的那样,(例如foreach(i=1:10,DF),但我没有成功地完成了这项工作。
【问题讨论】:
标签: r loops matrix foreach parallel-processing