使用 R 代码精确列出给定包导入的包?

List the packages imported by a given package precisely using R code?

要查看任何给定包导入了哪些包,我们可以访问手册,并在 'imports' 下查看,或者如果存储库位于 [=22],我们可以查看 DESCRIPTION 文件=],但是我们如何使用 R 代码来做到这一点呢?

例如,如果调用了这样一个函数 imports(),并且它是在 rvest 包中调用的,那么 imports(rvest) 将 return 类似于 [=15] =]

[1] httr (>= 0.5), magrittr, selectr

注意:查看一个包导入了哪些包的一种不太优雅的方法是启动一个新的 R 会话,查看加载的包,然后加载有问题的包,并比较列表(如果有更多加载包,那些是由相关包导入的)-但我不想使用这种方法,因为它需要经常启动新的 R 会话。

您应该看看 utils R 包中的 packageDescription 函数:https://stat.ethz.ch/R-manual/R-devel/library/utils/html/packageDescription.html。它正是这样做的,解析 DESCRIPTION 文件和 returns 带有结果的命名列表。

对于托管在 CRAN(或某些指定的 R 存储库)上的包,此信息在 available.packages() 返回的矩阵中已经很方便:

a1 <- available.packages()
a1["rvest","Imports"]
## [1] "httr (>= 0.5), magrittr, selectr"