Das gleiche R-Paket in mehreren Bibliotheken

8

Was soll passieren, wenn ein Paket in mehreren Bibliotheken installiert ist? Zum Beispiel kann man in Debian / Ubuntu debianisierte Pakete über apt-get installieren und dann auch eine neuere Version des gleichen Pakets direkt aus CRAN installieren. Wird bei Verwendung von library () das neueste Paket geladen oder hängt es von der Reihenfolge von .libPaths () ab?

    
Jeroen 08.01.2012, 21:31
quelle

3 Antworten

5

Wie bereits von anderen angegeben, ist .libPaths() search order matter, weshalb wir es so einstellen, dass lokale Pakete zuerst durchsucht werden, da die Distro-Versionen, insbesondere mit Debian stable oder Ubuntu Releases, die nicht aktualisiert werden, wahrscheinlicher sind älter.

In der Datei /etc/R/Renviron gibt es einen Kommentar zu diesem Effekt:

%Vor%

Also würde ein benutzerdefinierter Wert von R_LIBS_SITE Vorrang haben, ansonsten wird der hier gezeigte Wert verwendet.

    
Dirk Eddelbuettel 08.01.2012, 23:15
quelle
5

Nach meinem Verständnis hängt dies von der Reihenfolge von .libPaths () ab. Dies ist Code von library

%Vor%

Und das ist von der Hilfeseite für find.package

%Vor%

Und wenn es mehr als eine Instanz gibt, dann sollte es eine Warnung geben, basierend auf dem Lesen des Codes find.package (es sei denn, Sie setzen "verbose" auf FALSE):

%Vor%     
42- 08.01.2012 22:02
quelle
0

Wenn Sie Pakete mit apt-get installieren, sind Sie der sudo-Benutzer, so dass Bibliotheken im systemweiten Speicherort (normalerweise / usr / lib / R) installiert werden.

Wenn Sie CRAN verwenden, können Sie auch sudo oder ein normaler Benutzer sein. Im ersten Fall werden Pakete systemweit installiert (überschreiben von Dateien, die mit apt-get installiert wurden); Im zweiten Fall werden die Pakete im $ HOME / R des Benutzers installiert.

Wo ein Paket sowohl in / usr / lib / R als auch in $ HOME / R existiert, wird der erste Ort in .libPaths () beim Laden verwendet (normalerweise $ HOME / R).

BEARBEITEN: Wie Dirk sagte, sollten systemweite Installationen nach / usr / local / lib / R /, nicht nach / usr / lib / R gehen. Mein allgemeiner Punkt ist jedoch: Der Installationsort hängt von den Benutzerberechtigungen ab, und die Reihenfolge des Ladens hängt von .libPaths () ab.

    
neilfws 08.01.2012 22:31
quelle

Tags und Links