我正在寻找一种巧妙的方法来以编程方式获取包的Imports:和Depends:包。诀窍在于,无论包是否存在,该方法都应该有效
devtools::load_all(),或所需功能:
package_deps("dplyr")
## [1] "assertthat" "bindrcpp" "glue" "magrittr" "methods" "pkgconfig"
## [7] "rlang" "R6" "Rcpp" "tibble" "utils"
Run Code Online (Sandbox Code Playgroud)
请注意,版本号已全部被删除。
我写这篇文章是因为它似乎应该已经存在。(毕竟,install.packages()需要类似的功能。)我宁愿不必自己管理所有特殊情况。
我维护的 pacman 包是这样做的:
if (!require("pacman")) install.packages("pacman")
pacman::p_depends(dplyr)
$Imports
[1] "assertthat" "bindrcpp" "glue" "magrittr" "methods"
[6] "pkgconfig" "rlang" "R6" "Rcpp" "tibble"
[11] "utils"
$LinkingTo
[1] "Rcpp" "BH" "bindrcpp" "plogr"
$Suggests
[1] "bit64" "covr" "dbplyr" "dtplyr"
[5] "DBI" "ggplot2" "hms" "knitr"
[9] "Lahman" "mgcv" "microbenchmark" "nycflights13"
[13] "rmarkdown" "RMySQL" "RPostgreSQL" "RSQLite"
[17] "testthat" "withr"
Run Code Online (Sandbox Code Playgroud)