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。
我的想法很简单,我有一个包装器包,可以加载和执行 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。