R包设计:如何将内部功能导出到集群



我正在处理一个R包,需要使用parallel::parLapply在集群上运行函数myfunmyfun从我的包中调用了几个额外的函数,这些函数又调用了更多的函数,其中一些函数有多个方法。。。因此,通过名称显式地将所有函数和方法传递到集群是非常麻烦的。

据我所知,标准的建议是跑步parallel::clusterEvalQ({library("my_package")})。但对library("my_package")的调用显然是R-CMD-check的诅咒。我有理由相信my-package:::function也不会在CRAN上飞行。

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

好的,这似乎有效,(它通过了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操作的检查。

最新更新