R包:在包加载时从文件夹中获取脚本

R package: sourcing scripts from folder on package load

我的想法很简单,我有一个包装器包,可以加载和执行 R 和 Python 脚本(通过 reticulate)。

尽管需要一个通用的 file/code 结构,但我们的想法是,如果用户想要为工作流定义一个新方法(例如,更新的分类法),添加一个新脚本就足够了在脚本文件夹中(即,将文件放在 rules/py/... 中并重建)。

完成这项工作的正确方法是什么?

我试过通过 .onLoad 加载文件,即

.onLoad <- function(lib, pkg){
  require(reticulate) #I know require is bad practice; this is for example purposes
  files <- dir('rules')
  lapply(files, function(w){
     source(sprintf('rules/%s', w))
     source_python(sprintf("py/%s/rule.py", w))
  })
}

但这似乎是在查看本地目录,而不是包内部。

我发现 R 能够从 data/ 目录或 .txt, .csv 加载 .rda.RData 文件,但仅此而已。扩展怎么样,比如我示例中的源文件?

如有任何帮助,我们将不胜感激!

文件夹 inst/exdata 允许在 R 包中添加任何类型的数据。这可能是存储与包的核心代码不直接相关的 .R.py 文件的正确位置。您可以使用 system.file("extdata", "file.ext", package="pkg") 访问这些文件。另见 extdata in R packages