我有一个很大的仿真,我想在多个内核上运行。 为此,我正在使用foreach()
包。使用foreach时使用循环计数器()
我迭代循环1000次,并在循环中,我使用从环路的位置矢量计数器,用于exampe:
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 + 1从i = 0开始。
'foreach(i = seq_len(reps))'然后你可以在循环中引用'i'。但是,请记住,您不会使用'foreach'循环来分配'a'。相反,您会使用'.combine'参数并在您显示时分配给'ls'。 – Roland 2014-10-27 12:25:15
但如果我在foreach序列中有另一个for循环呢?我可以在该循环中分配事物吗? – user1723765 2014-10-27 12:29:23
当然可以。但是,您需要了解“foreach”循环的工作方式,即它们具有返回值。阅读'foreach'小插曲。 – Roland 2014-10-27 12:48:14