2017-11-29 3 views
1

Ich habe ein R-Skript, das ich von Python mit rpy2 aufrufen. Es verwendet dplyr, doBy und ggplot2. Das Skript verfügt über install.packages-Befehle für diese 3 Pakete. Selbst wenn die Pakete bereits installiert sind, werden sie heruntergeladen, erstellt und installiert, was sehr zeitaufwendig ist. Gibt es eine Möglichkeit, die Installation nur auszuführen, wenn das Paket noch nicht installiert ist?Verhindern wiederholter Paketinstallation oder Vorinstallation von Paketen in R

Auch ich in einem Docker-Container ausgeführt, so nachdem die Container instanziiert sind die Pakete nicht dort das erste Mal das Skript ausgeführt wird. Gibt es eine Möglichkeit, die Pakete vorab zu laden? In diesem Fall würde ich die Befehle install.packages für diese Pakete nicht benötigen und meine obige Frage würde strittig werden.

+0

Können Sie Ihre Dockerfile teilen? Welches Bild verwenden Sie und wie installieren Sie die Pakete aus install.packages, während Sie das Image erstellen? – ganesshkumar

Antwort

1

Ich benutze immer:

if (!require(package)) install.packages("package") 

Also, wenn das Paket in der Bibliothek nicht vorhanden ist, wird es installiert werden.

+0

Danke das hat perfekt funktioniert. –

1
install.packages(setdiff(required_packages, installed.packages()[,"Package"])) 

Wenn Sie required_packages als Zeichenvektor der Namen der Pakete definieren Sie benötigen, werden diese Linie nur die Pakete installieren Sie derzeit nicht haben.

Also für Ihren Fall:

required_packages <- c("dplyr", "doBy", "ggplot2") 
install.packages(setdiff(required_packages, installed.packages()[,"Package"])) 
Verwandte Themen