我剛開始在R中使用foreach和%dopar%methodes進行並行處理,但是我得到的結果令人困惑,並且與for循環不一樣;這裏是我用來測試那些methodes和resultes我得到的代碼:%R中的dopar%無法正常工作
library(plyr); library(doParallel); library(foreach)
cs <- makeCluster(2)
registerDoParallel(cs)
sfor_start <- Sys.time()
s_for=as.numeric()
for (i in 1:1000) {
s_for[i] = sqrt(i)
}
print(Sys.time() - sfor_start)
sdopar_start <- Sys.time()
sdopar=as.numeric()
foreach(k=1:1000) %dopar% {
sdopar[k] = sqrt(k)
}
print(Sys.time() - sdopar_start)
而這裏的結果:提前:)
> s_for[1:10]; sdopar[1:10]
[1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751 2.828427 3.000000 3.162278
[1] NA NA NA NA NA NA NA NA NA NA
感謝
你可以試試'sdopar < - foreach(k = 1:1000)%dopar%{sqrt(k)}'? – CPak
適用於.combine = c,謝謝 –