【问题标题】:Get a list of all packages loaded in all .Rmd files in a directory获取目录中所有 .Rmd 文件中加载的所有包的列表
【发布时间】:2020-02-19 00:33:20
【问题描述】:

假设我在~/directory1/ 中有 2 个(或任意数量的).Rmd 文件。在每个文件中,我使用library(packagename) 加载了几个 R 包。如何获得一个字符向量,其中包含所有这些文件中加载的所有唯一包的名称?

【问题讨论】:

  • 没有资格作为一个直接的答案,但您可以使用 unix 工具并像cat *.Rmd | grep 'library(' | sort | uniq 那样做某事来获取包括库在内的所有行的列表;可能仍然是两个左右 - 但无论如何:将 .Rmd 作为文本文件读取并提取库语句是 99% 的好方法。
  • 另一个想法:将所有 *.Rmd 与例如cat ~/directory1/*.Rmd > ~/all_dir1.Rmd,构建 Rmd(尽管可能需要一段时间)并在 R 中运行 (.packages())(最后一个 Rmd 或 RStudio,我尝试了后者),这将为您提供计算期间加载的所有包。由于这可能需要一段时间,我可能会先去 grepping

标签: r r-markdown dependency-management


【解决方案1】:
#setwd(~/directory1/)
libs = lapply(list.files(pattern = "\\.Rmd$"),
              function(x){
                  d = readLines(x)
                  d = d[grepl("library\\(.*\\)", d)]
                  gsub("library\\((.*)\\)", "\\1", d)
              })
unique(unlist(libs))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 2010-11-30
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多