1

Rでは、単一の長い並列forループをいくつかの短いループに分割し、それらを再現可能で同一に保つ方法はありますか?

doRNGおよびパッケージでこれを実行しようとしましたforeachが、いくつかの短いループを続けて使用すると、RNG シードは 1 つの長いループを使用した場合と同じではないため、結果が異なります。

====

サンプルコード

library(doRNG)
library(foreach)
library(doParallel)

# one loop
set.seed(123) 
x1 <- foreach(i = 1:4) %dorng% sample(100, 5)

# several loops
set.seed(123) 
x2 <- foreach(i = 1:2) %dorng% sample(100, 5)
# ... possibly doing other computations and then resetting seed ...
x3 <- foreach(i = 1:2) %dorng% sample(100, 5)

all.equal(c(x1), c(x2, x3)) # component 3 and 4 differ
4

0 に答える 0