Я пытаюсь создать параллельную версию репликации поверх параллельного пакета.Проблема, с которой я сталкиваюсь, заключается в том, что она продолжает оценивать мои выражения перед передачей их в функцию репликации, воспроизводимый код:
par_replicate <- function(cl, n, expr){
parallel::clusterCall(
cl = cl,
function() replicate(n , expr)
)
}
cl <- parallel::makeCluster(2)
par_replicate(cl, 3, rnorm(1))
stopCluster(cl)
[[1]]
[1] -1.312669 -1.312669 -1.312669
[[2]]
[1] 0.5598533 0.5598533 0.5598533
Как вы можете видеть, выражение оценивается в кластере до его передачифункция replicate, таким образом, replicate просто возвращает несколько копий одного номера.Я в полном недоумении, как решить эту проблему, поэтому любая помощь будет оценена.