Hoe kom ik erachter welke pakketversie in R is geladen?

Ik ben aan het uitzoeken hoe ik mijn universiteitscluster kan gebruiken. Er zijn 2 versies van R geïnstalleerd. Systeembreed R 2.11 (Debian 6.0) en R 2.14.2 op een niet-standaard locatie.

Ik probeer MPI samen met sneeuw te gebruiken. De code die ik probeer uit te voeren is de volgende

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

Het werkt zonder de problemen op R 2.11. (Ik start het script met mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R). Als ik het nu probeer te doen met R 2.14.2, krijg ik het volgende bericht:

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

Het lijkt er dus op dat R de sneeuwversie van het pakket laadt die is gecompileerd voor R 2.11. Ik heb sneeuw onder R 2.14 in mijn thuismap geïnstalleerd en ik heb de volgende regels aan mijn code toegevoegd:

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

En de uitvoer vóór de fout bevestigt dat ik inderdaad R 2.14.2 gebruik en dat mijn map R-pakketten als eerste in het zoekpad staat. Maar ik krijg nog steeds de fout.

Dus mijn vraag is hoe ik kan bepalen welke versie van het pakket in R is geladen? Ik kan met installed.packagesalle pakketten zien die zijn geïnstalleerd, dus misschien is er een functie die vergelijkbare informatie weergeeft voor geladen pakketten?


Antwoord 1, autoriteit 100%

Je kunt sessionInfo()gebruiken om dat te bereiken.

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

Volgens opmerkingen en het onderstaande antwoord zijn er echter betere opties

> packageVersion("snow")

[1] ‘0.3.9’

Of:

"Rmpi" %in% loadedNamespaces()

Antwoord 2, autoriteit 47%

U kunt packageVersiongebruiken om te zien welke versie van een pakket is geladen

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

Hoewel het klinkt alsof je wilt zien welke versie van R je gebruikt, in welk geval @Justin’s sessionInfosuggestie de juiste keuze is


Antwoord 3, autoriteit 5%

Technisch gezien zijn alle antwoorden op dit moment fout. packageVersionretourneert niet de versie van het geladen pakket. Het gaat naar de schijf en haalt daar de pakketversie op.

Dit zal in de meeste gevallen geen verschil maken, maar soms wel. Voor zover ik weet, is de enige manier om de versie van een geladenpakket te krijgen, nogal hackachtig:

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

waar pkgde pakketnaam is.

EDIT: ik weet niet zeker wanneer deze functie is toegevoegd, maar je kunt ook getNamespaceVersiongebruiken, dit is schoner:

getNamespaceVersion(pkg)

Antwoord 4, autoriteit 4%

Om de versie van R te controleren, voer uit: R --version

Of nadat u in de R-shell bent, drukt u de inhoud van version$version.string

af

BEWERKEN

Om de versie van geïnstalleerde pakketten te controleren, doet u het volgende.

Na het laden van de bibliotheek, kunt u sessionInfo ()

. uitvoeren

Maar om de lijst met alle geïnstalleerde pakketten te kennen:

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

OF om een specifieke bibliotheekversie te extraheren, zodra u de informatie hebt geëxtraheerd met behulp van de functie installed.packagezoals hierboven, gebruikt u gewoon de naam van het pakket in de eerste dimensie van de matrix.

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

Het bovenstaande zal de versies van de RANN-bibliotheek en de grafische bibliotheek afdrukken.


Antwoord 5, autoriteit 3%

Je kunt zoiets als dit proberen:

  1. package_version(R.version)

  2. getRversion()


Antwoord 6, autoriteit 2%

GUI-oplossing:

Als u RStudio gebruikt, kunt u de pakketversie controleren in het deelvenster Packages.

voer hier de afbeeldingsbeschrijving in


Antwoord 7

Gebruik de R-methode packageDescriptionom de geïnstalleerde pakketbeschrijving te krijgen en gebruik voor versie gewoon $Versionals:

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

Antwoord 8

Op basis van de eerdere antwoorden is hier een eenvoudige alternatieve manier om de R-versie af te drukken, gevolgd door de naam en versie van elk pakket dat in de naamruimte is geladen. Het werkt in de Jupyter-notebook, waar ik problemen had met het uitvoeren van sessionInfo()en R --version.

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

Uit:

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

Antwoord 9

Oude vraag, maar niet een van de antwoorden is mijn favoriete commando om een snel en kort overzicht te krijgen van alle geladen pakketten:

(.packages())

Om te zien welke versie van alle geladen pakketten is geïnstalleerd, gebruikt u het bovenstaande commando om installed.packages()in te stellen.

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

Door het kolomnummer (3 voor pakketversie) te wijzigen, kunt u alle andere informatie opslaan in installed.packages()in een gemakkelijk leesbare matrix. Hieronder is een voorbeeld voor versienummer en afhankelijkheid:

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

Antwoord 10

Gebruik de volgende code om de versie van R-pakketten te verkrijgen die in het systeem is geïnstalleerd:

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

Antwoord 11

Search() kan een meer vereenvoudigde lijst geven van de bijgevoegde pakketten in een sessie (d.w.z. zonder de gedetailleerde informatie gegeven door sessionInfo())

zoek {base}- R Documentatie
Beschrijving: Geeft een lijst met bijgevoegde pakketten. Zoeken()

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"

Antwoord 12

Gebruik gewoon help(package="my_package")en bekijk de getoonde versie.

Dit veronderstelt dat er geen andere pakketversies zijn in dezelfde .libPaths.

Other episodes