将以下函数转换为并行处理的最佳方法是什么?平行随机生成
myapply <- function(n, FUN, ...) {
lapply(1:n, function(i) { FUN(...) })
}
我需要运行它与其他函数用于随机生成,例如,
myapply(100, function(...) rnorm(100, ...), 1, 1)
所以我需要它来正确处理随机种子。此外,我希望代码是便携式和平台无关的,所以parallel::mcapply
不适用于我。我正在考虑foreach
与doParallel
和doRNG
,但doRNG
目前不适用于CRAN上的Windows,并且未更新三年!我认为parallel::parLapply
,但我正确地做clusterExport
有问题,因为我没有要导出的元素的封闭列表(我发现this implementation或here,但我希望更简单些)。
您可能能够使用['future'](https://cran.r-project.org/web/packages/future /index.html)包:[NEWS](https://github.com/HenrikBengtsson/future/blob/1b93c3425e290971712c8f220f9a63ac67fdadc0/NEWS#L34-L44)文件讨论了使用并行RNG时的可重复性。 – r2evans