#r #foreach #parallel-foreach #reproducible-research
#r #foreach #параллельный-foreach #воспроизводимый-исследование
Вопрос:
В R есть ли способ разбить один длинный параллельный цикл for на несколько более коротких циклов и при этом сохранить их воспроизводимыми и идентичными?
Я пытался сделать это с doRNG
foreach
помощью пакетов and , но когда я использую несколько коротких циклов сразу после друг друга, начальные значения 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
Комментарии:
1. Я предполагаю, что «другие вычисления» занимают больше времени, чем выборка. Так что, может быть, решением может быть последовательная генерация выборок, а затем параллельное выполнение других вычислений?