fehlende Zusatzpakete in R installieren

Ich habe mir eine Funktion in R geschrieben, die vorgegebene Zusatzpakete installiert, falls diese noch nicht installiert wurden…
R
Autor:in

produnis

Veröffentlichungsdatum

4. Juni 2021

Kürzlich wurde in meiner Linux-Distribution die R-Version auf 4.1 angehoben. Das bedeutete für mich, dass ich alle Zusatzpakete neu installieren musste.

Ich habe mir daher eine Funktion in R geschrieben, die vorgegebene Zusatzpakete installiert, falls diese noch nicht installiert wurden.

install.my.packages <- function(){
  # Liste meiner favorisierten Pakete
  my_packages <- c("blogdown", "bookdown",
                 "car",
                 "foreign",
                 "gghighlight", "ggplot2",
                 "haven",
                 "likert",
                 "prettyR", "psych",
                 "reshape", "reshape2",
                 "samplingbook", "scales", "statip",
                 "tidyverse",
                 "VGAM",
                 "xtable"
)

#--------------
# Überprüfe, ob die Pakete bereits installiert sind
not_installed <- my_packages[!(my_packages %in% installed.packages()[ , "Package"])]
# installiere solche, die noch nicht installiert sind
if(length(not_installed)) install.packages(not_installed, dependencies = TRUE)
return(paste(length(not_installed), "Pakete wurden installiert (plus dependencies)."))
}

Die Funktion kann dann wie folgt aufgerufen werden:

install.my.packages()
[1] "0 Pakete wurden installiert (plus dependencies)."

Bei mir ist bereits alles up-to-date, so dass kein Paket installiert werden muss.

Mit einer leichten Änderung können weitere Pakete an den Parameter p übergeben werden:

install.my.packages <- function(p=""){
  # Liste meiner favorisierten Pakete
  my_packages <- c("blogdown", "bookdown",
                 "car",
                 "foreign",
                 "gghighlight", "ggplot2",
                 "haven",
                 "likert",
                 "prettyR", "psych",
                 "reshape", "reshape2",
                 "samplingbook", "scales", "statip",
                 "tidyverse",
                 "VGAM",
                 "xtable"
)

# Falls Pakete über den Parameter "p" übergeben wurden,
# füge sie der Liste hinzu
if(p!=""){
  my_packages <- c(p, my_packages)
    }
#--------------
# Überprüfe, ob die Pakete bereits installiert sind
not_installed <- my_packages[!(my_packages %in% installed.packages()[ , "Package"])]
# installiere solche, die noch nicht installiert sind
if(length(not_installed)) install.packages(not_installed, dependencies = TRUE)
return(paste(length(not_installed), "Pakete wurden installiert (plus dependencies)."))
}

Der Funktion kann so ein Vektor weiterer Pakete übergeben werden, die zusätzlich zur vorgegebenen Liste installiert werden, falls sie noch nicht installiert sind:

install.my.packages(c("ggpubr", "qqplotr"))
[1] "2 Pakete wurden installiert (plus dependencies)."

(Diese Anleitung hat es auch ins Buch geschafft)