如何解决R包设计:如何将内部函数导出到集群
我正在开发 R 包,我需要使用 myfun
在集群上运行函数 parallel::parLapply
。 myfun
从我的包中调用了几个额外的函数,这些函数又调用了更多的函数,其中一些函数有多个方法……所以按名称将所有函数和方法显式传递给集群非常麻烦。
据我所知,standard advice 是运行
parallel::clusterEvalQ({library("my_package")})
。但是对 library("my_package")
的调用显然是对 R-CMD-check 的厌恶。而且我有理由相信 my-package:::function
也不会在 CRAN 上飞行。
这里的标准方法是什么?我是否需要按名称导出每个相关的函数和方法?
解决方法
好的,这似乎有效,(它通过了 GitHub 上的 R-CMD 检查):
parallel::clusterExport(cl = cl,unclass(lsf.str(envir = asNamespace("my_package"),all = T)),envir = as.environment(asNamespace("my_package"))
)
希望对其他人有用。
globals
包中可能还有一个不错的解决方案,但我无法通过 GitHub 操作检查。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。