0
我有一個for
循環,我想並行運行,所以我使用foreach
來做到這一點。foreach循環每次迭代後更新矩陣R
我的循環輸出之一是一個包含所有迭代結果的矩陣。如果我使用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)
,但我還沒有成功地使這項工作。
這給了我一個創建矩陣的想法,但是我的原始代碼需要輸出3個數據幀,而不僅僅是一個。因此,我認爲做這項工作很困難/不可能。 – sym246
在這種情況下,如果要並行運行,請嘗試使用'lapply'或'mclappy'對矢量代碼進行矢量化。即使你設法在'for'循環中執行,在R中這樣長的for循環將會非常緩慢。 – Koundy