Comment savoir quelle version de paquet est chargée dans R?
Je suis en train de trouver comment utiliser mon cluster universitaire. Il a 2 versions de R installé. R 2.11 à l'échelle du système (Debian 6.0) et r 2.14.2 dans un emplacement non standard.
J'essaie D'utiliser MPI avec de la neige. Le code que j'essaie d'exécuter est le suivant
library(snow)
library(Rmpi)
cl <- makeMPIcluster(mpi.universe.size()-1)
stopCluster(cl)
mpi.quit()
Cela fonctionne sans les problèmes sur R 2.11. (Je lance le script avec mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R
). Maintenant, quand j'essaie de le faire avec R 2.14.2, je reçois le message suivant:
Error: This is R 2.11.1, package 'snow' needs >= 2.12.1
In addition: Warning message:
Il semble donc que R charge le paquet version de neige compilée pour r 2.11. J'ai installé snow sous r 2.14 dans mon dossier personnel et j'ai ajouté les lignes suivantes à mon code:
.libPaths("/soft/R/lib/R/library")
.libPaths("~/R/x86_64-pc-linux-gnu-library/2.11")
print(.libPaths())
print(sessionInfo())
print(version)
Et la sortie avant l'erreur confirme que j'exécute bien r 2.14.2 et que mon dossier R packages est le premier dans le chemin de recherche. Mais j'ai toujours l'erreur.
Ma question est donc de savoir comment déterminer quelle version du paquet est chargée dans R? Je peux voir avec installed.packages
tous les paquets qui sont installés, alors peut-être qu'il y a une fonction qui répertorie informations similaires pour les paquets chargés?
10 réponses
Vous pouvez utiliser sessionInfo()
pour accomplir cette.
> 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
>
Cependant, selon les commentaires et la réponse ci-dessous, il existe de meilleures options
> packageVersion("snow")
[1] ‘0.3.9’
Ou:
"Rmpi" %in% loadedNamespaces()
Vous pouvez utiliser packageVersion
pour voir quelle version d'un package est chargé
> packageVersion("snow")
[1] ‘0.3.9’
Bien qu'il semble que vous vouliez voir quelle version de R vous utilisez, auquel cas la suggestion de @ Justin sessionInfo
est la voie à suivre
Vous pouvez essayer quelque chose comme ceci:
package_version(R.version)
getRversion()
Pour vérifier la version de R exécutez: R --version
Ou une fois que vous êtes dans le shell R, imprimez le contenu de version$version.string
Modifier
Pour vérifier la version des paquets installés, procédez comme suit.
Après avoir chargé la bibliothèque, vous pouvez exécuter sessionInfo ()
, Mais pour connaître la liste de tous les paquets installés:
packinfo <- installed.packages(fields = c("Package", "Version"))
packinfo[,c("Package", "Version")]
Ou pour extraire une version de bibliothèque spécifique, une fois que vous avez extrait les informations en utilisant la fonction installed.package
comme ci-dessus, utilisez simplement le nom de la lot dans la première dimension de la matrice.
packinfo["RANN",c("Package", "Version")]
packinfo["graphics",c("Package", "Version")]
Ce qui précède imprimera les versions de la bibliothèque RANN et de la bibliothèque graphique.
Solution GRAPHIQUE:
Si vous utilisez RStudio, vous pouvez vérifier la version du package dans le volet Packages
.
Techniquement parlant, toutes les réponses en ce moment sont fausses. packageVersion
ne renvoie pas la version du paquet chargé. Il va sur le disque et récupère la version du paquet à partir de là.
Cela ne fera pas de différence dans la plupart des cas, mais parfois c'est le cas. Pour autant que je sache, la seule façon d'obtenir la version d'un paquet loaded est plutôt hackish:
asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]
Où pkg
est le nom du paquet.
EDIT: Je ne suis pas sûr quand cette fonction a été ajoutée, mais vous pouvez également utiliser getNamespaceVersion
, c'est plus propre:
getNamespaceVersion(pkg)
Utilisez la méthode R packageDescription
pour obtenir la description du package installé et pour la version, utilisez simplement $Version
comme:
packageDescription("AppliedPredictiveModeling")$Version
[1] "1.1-6"
Utilisez le code suivant pour obtenir la version des paquets R installés dans le système:
installed.packages(fields = c ("Package", "Version"))
Sur la base des réponses précédentes, voici une alternative simple pour imprimer la version R, suivie du nom et de la version de chaque paquet chargé dans l'espace de noms. Cela fonctionne dans le bloc-notes Jupyter, où j'ai eu des problèmes en cours d'exécution sessionInfo()
et R --version
.
print(paste("R", getRversion()))
print("-------------")
for (package_name in sort(loadedNamespaces())) {
print(paste(package_name, packageVersion(package_name)))
}
Out:
[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"
Search () peut donner une liste plus simplifiée des paquets attachés dans une session (c'est-à-dire sans les informations détaillées données par sessionInfo ())
Recherche {base}- R Documentation
Description: donne une liste des paquets joints. rechercher()
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"