package_dependencies {tools} | R Documentation |
Find (recursively) dependencies or reverse dependencies of packages.
package_dependencies(packages = NULL, db = NULL, which = "strong",
recursive = FALSE, reverse = FALSE,
verbose = getOption("verbose"))
packages |
a character vector of package names. |
db |
character matrix as from |
which |
a character vector listing the types of
dependencies, a subset of
|
recursive |
a logical indicating whether (reverse) dependencies
of (reverse) dependencies (and so on) should be included, or a
character vector like |
reverse |
logical: if |
verbose |
logical indicating if output should monitor the package search cycles. |
Named list with one element for each package in argument packages
,
each consists of a character vector naming the (recursive) (reverse) dependencies
of that package.
For given packages which are not found in the db, NULL
entries are returned,
as opposed to character(0)
entries which indicate no dependencies.
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")