我正在处理一个R包,需要使用parallel::parLapply
在集群上运行函数myfun
。myfun
从我的包中调用了几个额外的函数,这些函数又调用了更多的函数,其中一些函数有多个方法。。。因此,通过名称显式地将所有函数和方法传递到集群是非常麻烦的。
据我所知,标准的建议是跑步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操作的检查。