Come scoprire quale versione del pacchetto è caricata in R?


406

Sono in procinto di capire come usare il mio cluster universitario. Ha 2 versioni di R installate. Sistema R 2.11 (Debian 6.0) e R 2.14.2 in posizione non standard.

Sto provando a usare MPI insieme a neve. Il codice che sto cercando di eseguire è il seguente

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

Funziona senza problemi su R 2.11. (Lancio lo script con mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R). Ora quando provo a farlo con R 2.14.2, ricevo il seguente messaggio:

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

Quindi sembra che R carichi la versione snow del pacchetto compilata per R 2.11. Ho installato snow sotto R 2.14 nella mia cartella home e ho aggiunto le seguenti righe al mio codice:

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

E l'output prima dell'errore conferma che sto effettivamente eseguendo R 2.14.2 e la mia cartella dei pacchetti R è la prima nel percorso di ricerca. Ma ho ancora l'errore.

Quindi la mia domanda è come determinare quale versione del pacchetto è caricata in R? Posso vedere con installed.packagestutti i pacchetti installati, quindi forse c'è qualche funzione che elenca informazioni simili per i pacchetti caricati?


1
hai trovato una buona soluzione per questo problema? Nella mia esperienza e come indica la guida R, sia sessionInfo che packageVersion restituiscono la versione corrente installata nella posizione da cui è stato caricato il pacchetto: può essere sbagliato se un altro processo ha cambiato i pacchetti durante la sessione.
RockScience,

Risposte:


520

Puoi usarlo sessionInfo()per farlo.

> 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       
> 

Tuttavia, secondo i commenti e la risposta di seguito, ci sono opzioni migliori

> packageVersion("snow")

[1] '0.3.9'

O:

"Rmpi" %in% loadedNamespaces()

1
Grazie. Il mio errore è stato l'output di sessionInfo prima del caricamento del pacchetto. Alla fine si è scoperto che è stata caricata la versione corretta del pacchetto, ma R si è ancora lamentato della versione precedente. Ho installato la mia versione locale di R e tutto ha funzionato come un fascino.
mpiktas,

45
TMI! packageVersion()è molto meglio nella maggior parte dei casi
Louis Maddox,

1
Non consiglierei di usare sessionInfo. Vedere la Nota di? SessionInfo: "Le informazioni sui pacchetti e gli spazi dei nomi" caricati "sono la versione corrente installata nella posizione da cui è stato caricato il pacchetto: può essere errato se un altro processo ha modificato i pacchetti durante la sessione." Quindi: se vuoi sapere se il pacchetto è caricato o meno, usa meglio "Rmpi" %in% loadedNamespaces(); se vuoi sapere quale versione è installata in una posizione specifica, utilizzare megliopackageVersion(lib.loc = ...)
RockScience

Si veda la risposta di Gábor sotto per una risposta che restituisce la versione di un pacchetto attualmente caricato (che può essere diversa dalla versione su disco): stackoverflow.com/a/37369263/946850
krlmlr

273

Puoi usare packageVersionper vedere quale versione di un pacchetto è caricata

> packageVersion("snow")
[1]0.3.9

Anche se sembra che tu voglia vedere quale versione di R stai eseguendo, nel qual caso il sessionInfosuggerimento di @ Justin è la strada da percorrere


24

Per verificare la versione di R eseguire: R --version

O dopo essere nella shell R, stampare il contenuto di version$version.string

MODIFICARE

Per verificare la versione dei pacchetti installati, procedere come segue.

Dopo aver caricato la libreria, è possibile eseguire sessionInfo ()

Ma per conoscere l'elenco di tutti i pacchetti installati:

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

OPPURE per estrarre una versione specifica della libreria, dopo aver estratto le informazioni usando la installed.packagefunzione come sopra, basta usare il nome del pacchetto nella prima dimensione della matrice.

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

Quanto sopra stamperà le versioni della libreria RANN e della libreria grafica.


2
La domanda riguardava la versione del pacchetto, non la versione R. E se guardo il mio codice, io uso version.
mpiktas,

packinfo[, "Version", drop=F]dà risultati ancora più belli (il nome del pacchetto non è duplicato).
Marmite Bomber

21

Tecnicamente parlando, tutte le risposte in questo momento sono sbagliate. packageVersionnon restituisce la versione del pacchetto caricato. Va sul disco e recupera la versione del pacchetto da lì.

Questo non farà la differenza nella maggior parte dei casi, ma a volte lo fa. Per quanto ne so, l'unico modo per ottenere la versione di un pacchetto caricato è piuttosto hackish:

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

dov'è pkgil nome del pacchetto.

EDIT: Non sono sicuro quando è stata aggiunta questa funzione, ma puoi anche usare getNamespaceVersion, questo è più pulito:

getNamespaceVersion(pkg)

`:::`(pkg, .__NAMESPACE__.)$spec[["version"]]è sinonimo del asNamespace()metodo per ottenere la versione del pacchetto.
fabbro il

3
Questa risposta è così importante. packageVersion()mostra solo il risultato migliore installed.packages()ma se hai più versioni dello stesso pacchetto e ne carichi uno in particolare, non ti darà la risposta giusta.
calico_14

1
Per hughjonesd.shinyapps.io/rcheology è disponibile da quando è disponibile R 1.7.0.
krlmlr

20

Puoi provare qualcosa del genere:

  1. package_version(R.version)

  2. getRversion()


11

Soluzione GUI:

Se si utilizza RStudio, è possibile verificare la versione del pacchetto nel Packagesriquadro.

inserisci qui la descrizione dell'immagine


5

Utilizzare il metodo R packageDescriptionper ottenere la descrizione del pacchetto installato e per la versione utilizzare solo $Versioncome:

packageDescription("AppliedPredictiveModeling")$Version
[1] "1.1-6"

4

Sulla base delle risposte precedenti, ecco un semplice modo alternativo di stampare la versione R, seguito dal nome e dalla versione di ciascun pacchetto caricato nello spazio dei nomi. Funziona nel notebook Jupyter, dove ho avuto problemi a correre sessionInfo()e R --version.

print(paste("R", getRversion()))
print("-------------")
for (package_name in sort(loadedNamespaces())) {
    print(paste(package_name, packageVersion(package_name)))
}

Su:

[1] "R 3.2.2"
[1] "-------------"
[1] "AnnotationDbi 1.32.2"
[1] "Biobase 2.30.0"
[1] "BiocGenerics 0.16.1"
[1] "BiocParallel 1.4.3"
[1] "DBI 0.3.1"
[1] "DESeq2 1.10.0"
[1] "Formula 1.2.1"
[1] "GenomeInfoDb 1.6.1"
[1] "GenomicRanges 1.22.3"
[1] "Hmisc 3.17.0"
[1] "IRanges 2.4.6"
[1] "IRdisplay 0.3"
[1] "IRkernel 0.5"

2

Vecchia domanda, ma non tra le risposte è il mio comando preferito per ottenere una rapida e breve panoramica di tutti i pacchetti caricati:

(.packages())

Per vedere quale versione è installata di tutti i pacchetti caricati, basta usare il comando sopra per sottoinsieme installed.packages().

installed.packages()[(.packages()),3]

Modificando il numero di colonna (3 per la versione del pacchetto) è possibile ottenere qualsiasi altra informazione archiviata installed.packages()in una matrice di facile lettura. Di seguito è riportato un esempio per il numero di versione e la dipendenza:

installed.packages()[(.packages()),c(3,5)]

1

Utilizzare il seguente codice per ottenere la versione dei pacchetti R installati nel sistema:

installed.packages(fields = c ("Package", "Version"))

1

Basta usare help(package="my_package")e guardare la versione mostrata.

Ciò presuppone che non ci siano altre versioni del pacchetto nella stessa .libPaths.


0

Search () può fornire un elenco più semplificato dei pacchetti allegati in una sessione (ovvero, senza le informazioni dettagliate fornite da sessionInfo ())

cerca {base} - R
Descrizione della documentazione : fornisce un elenco di pacchetti allegati. Ricerca()

search()
#[1] ".GlobalEnv"        "package:Rfacebook" "package:httpuv"   
#"package:rjson"    
#[5] "package:httr"      "package:bindrcpp"  "package:forcats"   # 
#"package:stringr"  
#[9] "package:dplyr"     "package:purrr"     "package:readr"     
#"package:tidyr"    
#[13] "package:tibble"    "package:ggplot2"   "package:tidyverse" 
#"tools:rstudio"    
#[17] "package:stats"     "package:graphics"  "package:grDevices" 
#"package:utils"    
#[21] "package:datasets"  "package:methods"   "Autoloads"         
#"package:base"

1
Sì, ma sessionInfo fornisce anche il numero di versione. Nel mio caso, quest'ultimo è generalmente più importante.
mpiktas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.