Je suis en train de comprendre comment utiliser mon cluster universitaire. Il a 2 versions de R installé. Système R 2.11 (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'essaye de lancer est le suivant
library(snow)
library(Rmpi)
cl <- makeMPIcluster(mpi.universe.size()-1)
stopCluster(cl)
mpi.quit()
Cela fonctionne sans les problèmes de 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, j'obtiens 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 la version de paquet 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 le résultat avant l'erreur confirme que je suis bien en train d'exécuter R 2.14.2 et que mon dossier de packages R est le premier dans le chemin de recherche. Mais j'ai toujours l'erreur.
Ma question est donc comment puis-je 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’une fonction énumère des informations similaires pour les paquets chargés?
Vous pouvez utiliser sessionInfo()
pour accomplir cela.
> 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 paquet est chargée
> packageVersion("snow")
[1] ‘0.3.9’
Bien que cela semble vouloir dire quelle version de R vous utilisez, dans ce cas, la suggestion de la variable sessionInfo
de Justin est la meilleure solution
Vous pouvez essayer quelque chose comme ça:
package_version(R.version)
getRversion()
Pour vérifier la version de R, exécutez: R --version
Ou, une fois dans le shell R, imprimez le contenu de version$version.string
MODIFIER
Pour vérifier la version des packages 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 packages 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 à l'aide de la fonction installed.package
comme ci-dessus, utilisez simplement le nom du package 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.
Techniquement parlant, toutes les réponses à ce stade sont fausses. packageVersion
ne renvoie pas la version du package chargé. Il va sur le disque et va chercher la version du paquet à partir de là.
Cela ne fera pas une différence dans la plupart des cas, mais parfois, cela fait. Autant que je sache, le seul moyen d’obtenir la version d’un paquet chargé est le plutôt bidon:
asNamespace(pkg)$`.__NAMESPACE__.`$spec[["version"]]
où pkg
est le nom du paquet.
EDIT: Je ne sais pas quand cette fonction a été ajoutée, mais vous pouvez aussi utiliser getNamespaceVersion
, c'est plus propre:
getNamespaceVersion(pkg)
Utilisez la méthode R packageDescription
pour obtenir la description du paquet installé. Pour la version, utilisez simplement $Version
en tant que:
packageDescription("AppliedPredictiveModeling")$Version
[1] "1.1-6"
Sur la base des réponses précédentes, voici une autre solution simple d’impression de 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 avec sessionInfo()
et R --version
.
print(paste("R", getRversion()))
print("-------------")
for (package_name in sort(loadedNamespaces())) {
print(paste(package_name, packageVersion(package_name)))
}
En dehors:
[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"
Utilisez le code suivant pour obtenir la version des packages R installés sur le système:
installed.packages(fields = c ("Package", "Version"))
Utilisez simplement help(package="my_package")
et regardez la version indiquée.
Cela suppose qu'il n'y a pas d'autres versions de package dans le même .libPaths
.
Search () peut donner une liste plus simplifiée des paquets attachés à une session (c'est-à-dire sans les informations détaillées données par sessionInfo ())
search {base} - Documentation R
Description: Donne une liste des paquets attachés. Chercher()
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"