从/ inst目录列出文件以开发R包

时间:2017-03-23 10:05:23

标签: r list package

我想知道在开发R包时是否可以列出目录中的文件。从this页面,我读到应该使用system.file()来引用R包中包含的文件。但是,这似乎不适用于目录。我正在寻找如何列出特定目录中的文件:" a"在" inst"目录,然后我会用:

list.files(system.file("a/", package = [package_name]))

list.files(system.file("a", package = [package_name]))

然而,这并没有奏效并返回一个空字符串。此外,在列表中引用一堆.sql文件可能是不好的做法吗?

1 个答案:

答案 0 :(得分:0)

system.file(package = 'package_name')返回包目录根目录的绝对路径(文件来自?system.file)。但是,如果需要,devtools会覆盖此函数并将其替换为包工作目录的绝对路径(启动load_all()命令的路径)。

但是,当包不存在(例如system.file(package = 'non_existing_package'))时,路径返回相对路径。

> system.file('a', package = 'existing_package')
"C:/.../package_directory/a"
> system.file('a', package = 'non_existing_package')
"a"

根据工作目录的设置方式,这可能在某些情况下有效。