2
我只是採取我的第一步與包parallel
和foreach()
函數。因此這個問題會比較愚蠢。所以這裏是我的任務,我想fullfil:取決於以前的結果並行化for循環
- 應用功能的一個對象
t
- 使用結果在下一次迭代
一個簡單的例子是:
newFunc<-function(){
test[i+1] <<- sqrt(test[i])
}
test <- c(1,rep(NA, 10))
foreach(i=1:11, .combine='rbind', .export='test')%do% newFunc()
這給我一個向量作爲for循環當然也是。不過,如果我嘗試parallelise這這會產生不同的結果:
test <- c(1,rep(NA, 10))
library(doParallel)
library(foreach)
cl <- makeCluster(4)
registerDoParallel(cl)
foreach(i=1:11, .combine='rbind', .export='test')%dopar% newFunc()
stopCluster(cl)
這給我留下了輸出c(1, NA, NA, NA, NA, ..., NA)
。我猜想這是因爲奴隸不知道其他功能的結果?我希望我提供了必要的信息。我的實際功能當然更復雜,但這個例子似乎是證明我的問題最簡單的方法。
編輯:我想第一個問題是:這樣的問題可以並行嗎?
我不明白。如果迭代的每一步取決於前一步,則不能並行執行。 – Roland
好吧我猜這已經回答了我的問題!謝謝 – Seb