首页 > 解决方案 > R包设计:如何将内部函数导出到集群

问题描述

我正在开发一个 R 包,我需要myfun使用parallel::parLapply. myfun从我的包中调用了几个额外的函数,这些函数又调用了更多函数,其中一些函数有多个方法……所以通过名称显式地将所有函数和方法传递给集群是非常麻烦的。

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

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

标签: rparallel-processingr-package

解决方案


好的,这似乎可行,(它通过了 GitHub 上的 R-CMD-check):

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

希望对其他人有用。

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


推荐阅读