私はRを初めて使っています。この非常に簡単なスクリプトを書いて問題を浮き彫りにしました。私がこのforループを実行すると、必要に応じて各繰り返しでtestdataが更新されます。R:foreachとの並列化
a = 5
b = 4
c = 3
testdata = matrix(nrow=100, ncol=5)
for(j in 1:100){
testdata[j,1] <- a*j
testdata[j,2] <- b*j
testdata[j,3] <- c*j
testdata[j,4] <- (a+b)*j
testdata[j,5] <- (a+c)*j
}
しかし、foreachを使用するこの並列バージョンでは計算が完了しますが、testdataでは更新されません。
a = 5
b = 4
c = 3
testdata = matrix(nrow=100, ncol=5)
library(foreach)
library(doParallel)
library(doMC)
registerDoMC()
getDoParWorkers() # Checking the number of cores.
foreach(j = 1:100) %dopar% {
testdata[j,1] <- a*j
testdata[j,2] <- b*j
testdata[j,3] <- c*j
testdata[j,4] <- (a+b)*j
testdata[j,5] <- (a+c)*j
}
私はインターネット上で、ここで、他の場所の例に従うことを試みたが、例のほとんどは、Rのshoptalkで深すぎだったと私は従うことができませんでした。どのように私はこの並列バージョンを、非並行バージョンがするものにすることができます。ありがとう。
'.combine'引数を見てください。 – nrussell