我有一個很大的仿真,我想在多個內核上運行。 爲此,我正在使用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