以下の関数を並列処理に変換する最良の方法は何ですか?ランダム生成を伴う並列アプリケーション
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では利用できず、3年間更新されていませんでした。私はparallel::parLapply
と考えていましたが、私はclusterExport
をエクスポートする要素の閉じたリストを持っていません(this implementation、またはhereが見つかりましたが、私はもっと単純なものを望んでいました)。
(https://cran.r-project.org/web/packages/future /index.html)パッケージ:[NEWS](https://github.com/HenrikBengtsson/future/blob/1b93c3425e290971712c8f220f9a63ac67fdadc0/NEWS#L34-L44)ファイルは、並列RNG使用による再現性について語っています。 – r2evans