[R-pkg-devel] Question regarding listing base and recommended packages programmatically and efficiently
On Thu, 12 Oct 2023 11:32:24 -0400
Mikael Jagan <jaganmn2 at gmail.com> wrote:
> mk <- file.path(R.home("share"), "make", "vars.mk")
> pp <- sub("^.*= +", "", grep("^R_PKGS_RECOMMENDED",
> readLines(mk), value = TRUE))
> sort(strsplit(pp, " ")[[1L]])
[1] "KernSmooth" "MASS" "Matrix" "boot" "class"
[6] "cluster" "codetools" "foreign" "lattice" "mgcv"
[11] "nlme" "nnet" "rpart" "spatial" "survival"
I grepped around and did not find variables in any base namespace
containing the names of these packages. It wouldn't be too hard to
define such variables when R is configured/built, but maybe there are
"reasons" to not do that ... ?
tools:::.get_standard_package_names does that at package installation time, but it's still not public API. A call to installed.packages() may take a long while because it has to list files in every library (some of which can be large and/or network-mounted) and parse each Meta/package.rds file, but at least list.files() is faster than that. If I had to make a choice at this point, I would hard-code the list of packages, but a better option may surface once we know what Tony needs the package lists for.
Best regards, Ivan