【发布时间】:2014-10-27 12:11:07
【问题描述】:
我有一个大型模拟,我想在多个内核上运行。
为此,我使用了foreach() 包。
我正在迭代一个循环 1000 次,并且在循环内我使用循环中的计数器作为位置向量,例如:
reps<-1000
for (i in reps){
a[i]<-mean(rnorm(100))
}
如果我对 foreach 做同样的事情:
library(foreach)
cl<-makeCluster(8)
registerDoParallel(cl)
ls<-foreach(icount(reps)) %dopar% {
rnorm(100)
}
我不能再像原来的循环那样使用当前的计数器 i。 有没有办法使用它?
我也可以使用计数器,就像每次迭代通过时,我都会从 i=0 开始执行 i=i+1。
【问题讨论】:
-
foreach(i = seq_len(reps))然后你可以在循环中引用i。但是,请记住,您不会使用foreach循环分配给a。相反,您将使用.combine参数并分配给您所显示的ls。 -
但是如果我在 foreach 序列中有另一个 for 循环呢?我可以在那个循环中分配东西吗?
-
当然可以。但是,您需要了解
foreach循环的工作原理,即它们具有返回值。阅读foreach小插曲。
标签: r foreach parallel-processing