当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R package_dependencies 包的依赖层次结构的计算


R语言 package_dependencies 位于 tools 包(package)。

说明

查找(递归)包的依赖关系或反向依赖关系。

用法

package_dependencies(packages = NULL, db = NULL, which = "strong",
	             recursive = FALSE, reverse = FALSE,
                     verbose = getOption("verbose"))

参数

packages

包名称的字符向量。

db

来自available.packages() 的字符矩阵(默认NULL 是此调用的结果)或其数据帧变体。或者,也可以使用 https://cran.r-project.org/web/packages/packages.rds 中提供的包数据库。

which

列出依赖关系类型的字符向量,是 c("Depends", "Imports", "LinkingTo", "Suggests", "Enhances") 的子集。字符串 "all" 是该向量的简写,字符串 "most" 表示不带 "Enhances" 的同一向量,字符串 "strong" (默认)表示该向量的前三个元素。

recursive

指示是否应包含(反向)依赖项(等等)的(反向)依赖项的逻辑,或者指示要递归添加的(反向)依赖项的类型的字符向量(如 which)。

reverse

逻辑:如果FALSE(默认),则计算正则依赖关系,否则反向依赖关系。

verbose

逻辑指示输出是否应监视包搜索周期。

参数 packages 中每个包都有一个元素的命名列表,每个元素都包含一个字符向量,该字符向量命名该包的(递归)(反向)依赖项。

对于在数据库中找不到的给定包,将返回 NULL 条目,而不是指示没有依赖项的 character(0) 条目。

例子


myPkgs <- c("MASS", "Matrix", "KernSmooth", "class", "cluster", "codetools")
pdb <- available.packages(repos = findCRANmirror("web"))
system.time(
dep1 <- package_dependencies(myPkgs, db = pdb) # all arguments at default
) # very fast
utils::str(dep1, vec.len=10)

system.time( ## reverse dependencies, recursively --- takes much longer:
deps <- package_dependencies(myPkgs, db = pdb, which = "most",
                             recursive = TRUE, reverse = TRUE)
) # seen ~ 10 seconds

lengths(deps) # 2020-05-03: all are 16053, but codetools with 16057

## install.packages(dependencies = TRUE) installs 'most' dependencies
## and the strong recursive dependencies of these: these dependencies
## can be obtained using 'which = "most"' and 'recursive = "strong"'.
## To illustrate on the first packages with non-missing Suggests:
packages <- pdb[head(which(!is.na(pdb[, "Suggests"]))), "Package"]
package_dependencies(packages, db = pdb,
                     which = "most", recursive = "strong")

也可以看看

dependsOnPkgs

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Computations on the Dependency Hierarchy of Packages。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。