我想知道在开发R包时是否可以列出目录中的文件。从this页面,我读到应该使用system.file()来引用R包中包含的文件。但是,这似乎不适用于目录。我正在寻找如何列出特定目录中的文件:" a"在" inst"目录,然后我会用:
list.files(system.file("a/", package = [package_name]))
或
list.files(system.file("a", package = [package_name]))
然而,这并没有奏效并返回一个空字符串。此外,在列表中引用一堆.sql文件可能是不好的做法吗?
答案 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"
根据工作目录的设置方式,这可能在某些情况下有效。