【问题标题】:List files from /inst directory for development of R package列出 /inst 目录中用于开发 R 包的文件
【发布时间】:2017-08-15 19:38:53
【问题描述】:

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

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

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

但是,这不起作用并返回了一个空字符串。此外,例如在一个包中引用列出一堆 .sql 文件是否可能是不好的做法?

【问题讨论】:

  • 我想你忘了 inst.试试list.files(system.file("inst","a", package = [package_name]))。 package 参数指向包的根文件夹,而不仅仅是任何随机文件夹。
  • 是的,你是对的。我检查了原因,我在某处使用了 devtools::load_all() 。在此之前,它可以在没有“inst”的情况下完美运行。我现在怀疑哪个版本是正确的。

标签: r list package


【解决方案1】:

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"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2012-11-07
    • 2020-12-30
    相关资源
    最近更新 更多