567 Stimmen

Wie findet man heraus, welche Paketversion in R geladen ist?

Ich bin gerade dabei, herauszufinden, wie ich meinen Universitätscluster nutzen kann. Es sind 2 Versionen von R installiert. Systemweit R 2.11 (Debian 6.0) und R 2.14.2 an einem nicht standardisierten Ort.

Ich versuche, MPI zusammen mit Snow zu verwenden. Der Code, den ich auszuführen versuche, ist der folgende

library(snow)
library(Rmpi)
cl <- makeMPIcluster(mpi.universe.size()-1)
stopCluster(cl)
mpi.quit()

Es funktioniert ohne die Probleme auf R 2.11. (Ich starte das Skript mit mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R ). Wenn ich nun versuche, dies mit R 2.14.2 zu tun, erhalte ich die folgende Meldung:

Error: This is R 2.11.1, package 'snow' needs >= 2.12.1
In addition: Warning message:

Es scheint also, dass R das Paket snow lädt, das für R 2.11 kompiliert wurde. Ich habe snow unter R 2.14 in meinem Home-Ordner installiert und die folgenden Zeilen zu meinem Code hinzugefügt:

.libPaths("/soft/R/lib/R/library")
.libPaths("~/R/x86_64-pc-linux-gnu-library/2.11")
print(.libPaths())
print(sessionInfo())
print(version)

Und die Ausgabe vor der Fehlermeldung bestätigt, dass ich tatsächlich R 2.14.2 verwende und mein R-Paketordner an erster Stelle im Suchpfad steht. Aber ich erhalte immer noch die Fehlermeldung.

Meine Frage ist also, wie kann ich feststellen, welche Version des Pakets in R geladen ist? Ich kann sehen mit installed.packages alle installierten Pakete, vielleicht gibt es also eine Funktion, die ähnliche Informationen für geladene Pakete auflistet?

735voto

Justin Punkte 41677

Sie können verwenden sessionInfo() um dies zu erreichen.

> sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8    LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] graphics  grDevices utils     datasets  stats     grid      methods   base     

other attached packages:
[1] ggplot2_0.9.0  reshape2_1.2.1 plyr_1.7.1    

loaded via a namespace (and not attached):
 [1] colorspace_1.1-1   dichromat_1.2-4    digest_0.5.2       MASS_7.3-18        memoise_0.1        munsell_0.3       
 [7] proto_0.3-9.2      RColorBrewer_1.0-5 scales_0.2.0       stringr_0.6       
> 

Wie in den Kommentaren und in der Antwort unten erwähnt, gibt es jedoch bessere Möglichkeiten

> packageVersion("snow")

[1] '0.3.9'

Oder:

"Rmpi" %in% loadedNamespaces()

361voto

GSee Punkte 47100

Sie können verwenden utils::packageVersion um zu sehen, welche Version eines Pakets installiert ist:

> packageVersion("snow")
[1] ‘0.3.9’

Beachten Sie, dass

Ein Paket wird nicht 'gefunden', wenn es nicht eine DESCRIPTION Datei, die eine gültige Version Feld. Es werden unterschiedliche Warnungen ausgegeben, wenn kein Paketverzeichnis gefunden wird und wenn es zwar ein passendes Verzeichnis gibt, aber kein gültiges DESCRIPTION Datei.

Obwohl es sich so anhört, als ob Sie sehen wollen, welche Version von R Sie verwenden, in welchem Fall @Justin's sessionInfo Anregung ist der richtige Weg.

45voto

Gabor Csardi Punkte 10560

Technisch gesehen sind alle Antworten zum jetzigen Zeitpunkt falsch. packageVersion gibt nicht die Version des geladenen Pakets zurück. Es geht zur Festplatte und holt sich die Paketversion von dort.

In den meisten Fällen wird dies keinen Unterschied machen, aber manchmal schon. Soweit ich das beurteilen kann, ist die einzige Möglichkeit, die Version einer geladen Paket ist das eher hakelig:

asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]

donde pkg ist der Name des Pakets.

EDIT: Ich bin nicht sicher, wann diese Funktion hinzugefügt wurde, aber Sie können auch getNamespaceVersion das ist sauberer:

getNamespaceVersion(pkg)

25voto

phoxis Punkte 55762

Um die Version von R zu überprüfen, führen Sie aus: R --version

Oder nachdem Sie in der R-Shell sind, drucken Sie den Inhalt von version$version.string

EDITAR

Um die Version der installierten Pakete zu überprüfen, gehen Sie wie folgt vor.

Nachdem Sie die Bibliothek geladen haben, können Sie Folgendes ausführen sessionInfo ()

Aber um die Liste aller installierten Pakete zu kennen:

packinfo <- installed.packages(fields = c("Package", "Version"))
packinfo[,c("Package", "Version")]

ODER um eine bestimmte Bibliotheksversion zu extrahieren, nachdem Sie die Informationen mit der Option installed.package Funktion wie oben, nur mit dem Namen des Pakets in der ersten Dimension der Matrix.

packinfo["RANN",c("Package", "Version")]
packinfo["graphics",c("Package", "Version")]

Auf diese Weise werden die Versionen der RANN-Bibliothek und der Grafikbibliothek ausgedruckt.

21voto

Sathish Punkte 11965

Sie können es so versuchen:

  1. package_version(R.version)

  2. getRversion()

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X