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

时间:2019-05-02 09:53:57

标签: r r-package roxygen2

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

尽管需要通用的文件/代码结构,但其想法是,如果用户要为工作流程定义新方法(例如,更新的分类法),则在scripts文件夹中添加新脚本就足够了(即,将文件放置在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能够从.rda目录或.RData加载data/.txt, .csv文件,但是仅此而已。扩展如何处理,例如在我的示例中采购文件?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

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