On 08/11/2019 2:06 a.m., Joshua Bradley wrote:
Hello,

Currently if you install a package twice:

install.packages("testit")
install.packages("testit")

R will build the package from source (depending on what OS you're using)
twice by default. This becomes especially burdensome when people are using
big packages (i.e. lots of depends) and someone has a script with:

install.packages("tidyverse")
...
... later on down the script
...
install.packages("dplyr")

In this case, "dplyr" is part of the tidyverse and will install twice. As
the primary "package manager" for R, it should not install a package twice
(by default) when it can be so easily checked. Indeed, many people resort
to writing a few lines of code to filter out already-installed packages An
r-help post from 2010 proposed a solution to improving the default
behavior, by adding "force=FALSE" as a api addition to install.packages.(
https://stat.ethz.ch/pipermail/r-help/2010-May/239492.html)

Would the R-core devs still consider this proposal?

Whether or not they'd do it, it's easy for you to do it.

install.packages <- function(pkgs, ..., force = FALSE) {
  if (!force) {
    pkgs <- Filter(Negate(requireNamespace), pkgs

  utils::install.packages(pkgs, ...)
}

You might want to make this more elaborate, e.g. doing update.packages() on the ones that exist. But really, isn't the problem with the script you're using, which could have done a simple test before forcing a slow install?

Duncan Murdoch

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to