當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。