私はパッケージparallel
とforeach()
関数で最初の一歩を踏み出しています。したがって、この質問はかなりばかげています。だからここに私が満たしたい私の仕事があります:
- 関数をオブジェクトに適用する
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 ループと同様に 1 のベクトルが生成されます。ただし、これを並列化しようとすると、別の結果が得られます。
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)
。これは、スレーブが他の関数の結果を知らないためだと思いますか? 必要な情報を提供できたと思います。私の実際の機能はもちろんもっと複雑ですが、この例は私の問題を示す最も簡単な方法のようです。
編集:最初の質問は次のとおりだと思います:そのような問題はまったく並列化できますか?