在 R 中,有没有办法将一个长的并行 for 循环分解为几个较短的循环,并且仍然保持它们的可重复性和相同性?
我尝试使用doRNG
andforeach
包来做到这一点,但是当我紧接着使用几个短循环时,RNG 种子与使用一个长循环时不同,因此结果不同。
====
示例代码
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