以编程方式获取基础包的列表

时间:2014-02-05 01:35:47

标签: r

如何让R列出其基本安装包。 Dirk给出了一个列表HERE,但我如何让R告诉我这些信息,即src/library/中的包?

getOption("defaultPackages")已关闭,但仅列出其中一些软件包。

3 个答案:

答案 0 :(得分:11)

rownames(installed.packages(priority="base"))
 [1] "base"      "compiler"  "datasets"  "graphics"  "grDevices" "grid"     
 [7] "methods"   "parallel"  "splines"   "stats"     "stats4"    "tcltk"    
[13] "tools"     "utils"    

答案 1 :(得分:3)

TL;博士。

  • rownames(installed.packages(priority = "base")) 您的 R.Version() 的所有基本软件包。
  • c(getOption("defaultPackages"), "base") 是 R 在启动时加载的内容

installed.packages 将返回您当前安装的软件包。
每个特定 R 版本 (R.Version()) 的基本软件包始终相同。这个列表将来可能会随着更新的 R 版本而改变。例如。我记得 parallel 的添加时间比其他 R `parallel` package does not exist on CRAN? 晚。

getOption("defaultPackages") 是 R 在启动时加载的内容,尽管 base 包不计算在内。
我发现 sessionInfo()$basePkgs 解决方案对于启动包更可靠,因为它也包含一个 base 包。然而,sessionInfo()$basePkgs 的效率相对较低,因为它是一个跨越所有描述文件的简单循环。

microbenchmark::microbenchmark(sessionInfo()$basePkgs,
                               getOption("defaultPackages"))
Unit: nanoseconds
                         expr     min      lq       mean  median      uq      max neval
       sessionInfo()$basePkgs 6172017 6242209 6673759.42 6294546 6848292 16656578   100
 getOption("defaultPackages")     205     246     526.85     451     656     1722   100

答案 2 :(得分:2)

可能有一个更简单的方法,但我认为这应该可以解决问题:

installed.packages()[grep('^base$', installed.packages()[, 'Priority']), ]