R包设计:如何将内部函数导出到集群

Jac*_*lar 5 parallel-processing r r-package

我正在开发 R 包,并且需要myfun使用parallel::parLapply. myfun调用我的包中的几个附加函数,这些函数又调用更多函数,其中一些函数有多个方法......因此按名称显式将所有函数和方法传递到集群非常麻烦。

据我了解,标准建议是跑步 parallel::clusterEvalQ({library("my_package")})。但对 R-CMD-check 的调用library("my_package")显然是令人厌恶的。我有理由相信这my-package:::function也不会在 CRAN 上运行。

这里的标准方法是什么?我需要按名称导出每个相关函数和方法吗?

Jac*_*lar 2

好的,这似乎有效,(它通过了 GitHub 上的 R-CMD 检查):

parallel::clusterExport(cl = cl, 
                        unclass(lsf.str(envir = asNamespace("my_package"), 
                                        all = T)),
                        envir = as.environment(asNamespace("my_package"))
                        )
Run Code Online (Sandbox Code Playgroud)

希望对其他人有用。

可能还可以通过该globals包提供一个漂亮的解决方案,但我无法让它通过 GitHub 操作的检查。