This is intended to replace package_dependencies
or
pkgDep
in the miniCRAN package, but with modifications for speed.
It will first check local package directories in libPath
, and it if
the function cannot find the packages there, then it will use
package_dependencies
.
pkgDep2
is a convenience wrapper of pkgDep
that "goes one level in",
i.e., the first order dependencies, and runs the pkgDep
on those.
This is a wrapper around tools::dependsOnPkgs
,
but with the added option of sorted
, which
will sort them such that the packages at the top will have
the least number of dependencies that are in pkgs
.
This is essentially a topological sort, but it is done
heuristically. This can be used to e.g., detach
or
unloadNamespace
packages in order so that they each
of their dependencies are detached or unloaded first.
pkgDep(
packages,
libPath,
recursive = TRUE,
depends = TRUE,
imports = TRUE,
suggests = FALSE,
linkingTo = TRUE,
topoSort = FALSE,
repos = getOption("repos"),
refresh = FALSE,
verbose = getOption("reproducible.verbose")
)pkgDep2(
packages,
recursive = TRUE,
depends = TRUE,
imports = TRUE,
suggests = FALSE,
linkingTo = TRUE,
repos = getOption("repos"),
refresh = FALSE,
verbose = getOption("reproducible.verbose"),
sorted = TRUE
)
pkgDepTopoSort(
pkgs,
deps,
reverse = FALSE,
topoSort = TRUE,
useAllInSearch = FALSE,
returnFull = TRUE
)
a character vector of package names.
The library path where all packages should be installed, and looked for to load
(i.e., call library
)
Logical. Should dependencies of dependencies be searched, recursively.
NOTE: Dependencies of suggests will not be recursive. Default TRUE
.
Logical. Include packages listed in "Depends". Default TRUE
.
Logical. Include packages listed in "Imports". Default TRUE
.
Logical. Include packages listed in "Suggests". Default FALSE
.
Logical. Include packages listed in "LinkingTo". Default TRUE
.
Logical. If TRUE
, the default, then
the returned list of packages will be in order with the
least number of dependencies listed in pkgs
at
the top of the list.
The remote repository (e.g., a CRAN mirror), passed to either
install.packages
, install_github
or installVersions
.
There is an internal type of caching. If the results are wrong, likely
set refresh = TRUE
.
logical indicating if output should monitor the package search cycles.
Logical. If TRUE
, the default, the packages will be sorted in
the returned list from most number of dependencies to least.
A vector of package names to evaluate their reverse depends (i.e., the packages that use each of these packages)
An optional named list of (reverse) dependencies.
If not supplied, then tools::dependsOnPkgs(..., recursive = TRUE)
will be used
logical: if FALSE
(default), regular
dependencies are calculated, otherwise reverse dependencies.
Logical. If TRUE
, then all non-core
R packages in search()
will be appended to pkgs
to allow those to also be identified
Logical. If TRUE
, then the full reverse
dependencies will be returned; if FALSE
, the default,
only the reverse dependencies that are found within the pkgs
(and search()
if useAllInSearch = TRUE
) will be returned.
A possibly ordered, named (with packages as names) list where list elements are either full reverse depends.
# NOT RUN {
pkgDep("crayon")
pkgDep2("reproducible")
# }
Run the code above in your browser using DataLab