R'de hangi paket sürümünün yüklü olduğunu nasıl öğrenebilirim?


405

Üniversite kümemi nasıl kullanacağımı çözme sürecindeyim. Yüklü 2 R sürümü vardır. Standart olmayan bir yerde sistem çapında R 2.11 (Debian 6.0) ve R 2.14.2.

MPI'yı karla birlikte kullanmaya çalışıyorum. Çalışmaya çalıştığım kod aşağıdaki

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

R 2.11'de sorunsuz çalışır. (Senaryoyu ile başlatırım mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R). Şimdi R 2.14.2 ile yapmaya çalıştığımda, aşağıdaki mesajı alıyorum:

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

Yani R, R 2.11 için derlenen paket kar versiyonunu yüklüyor. Ana klasöre R 2.14 altında kar yükledim ve koduma aşağıdaki satırları ekledim:

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

Ve hatadan önceki çıktı gerçekten R 2.14.2 çalıştırdığımı ve R paketleri klasörünün ilk arama yolunda olduğunu doğrular. Ama yine de hatayı alıyorum.

Benim sorum R hangi paketin yüklü sürümünü nasıl belirlerim? installed.packagesYüklü tüm paketler ile görebilirsiniz , bu yüzden belki de yüklü paketler için benzer bilgileri listeleyen bazı işlevi var?


1
bu sorun için iyi bir çözüm buldunuz mu? Deneyimlerime göre ve R yardımında belirtildiği gibi, hem sessionInfo hem de packageVersion , paketin yüklendiği yerde yüklü olan geçerli sürümü
RockScience

Yanıtlar:


519

Bunu sessionInfo()başarmak için kullanabilirsiniz .

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

Ancak, yorumlara ve aşağıdaki cevaba göre, daha iyi seçenekler var

> packageVersion("snow")

[1] '0.3.9'

Veya:

"Rmpi" %in% loadedNamespaces()

1
Teşekkürler. Benim hatam paket yüklenmeden önce sessionInfo çıktı oldu. Sonunda paketin doğru sürümünün yüklendiği ortaya çıktı, ancak R hala eski sürümden şikayet etti. R'nin kendi yerel sürümünü yükledim ve her şey bir cazibe gibi çalıştı.
mpiktas

45
TMI! packageVersion()çoğu durumda çok daha iyi
Louis Maddox

1
Ben tavsiye etmem sessionInfo. ? SessionInfo Notu: "'Yüklenen' paketler ve ad alanlarındaki bilgiler, paketin yüklendiği konuma yüklenmiş geçerli sürümdür: oturum sırasında başka bir işlem paketleri değiştiriyorsa yanlış olabilir." Yani: paketin yüklü olup olmadığını bilmek istiyorsanız, daha iyi kullanın "Rmpi" %in% loadedNamespaces(); Belirli bir konumda hangi sürümün yüklü olduğunu bilmek istiyorsanız, daha iyi kullanınpackageVersion(lib.loc = ...)
RockScience

Şu anda yüklü bir paketin sürümünü ( diskteki sürümden farklı olabilir) döndüren bir yanıt için aşağıdaki Gábor yanıtına bakın : stackoverflow.com/a/37369263/946850
krlmlr

273

packageVersionBir paketin hangi sürümünün yüklü olduğunu görmek için kullanabilirsiniz

> packageVersion("snow")
[1]0.3.9

Hangi R sürümünü kullandığınızı görmek istediğiniz gibi görünse de, bu durumda @ Justin'in sessionInfoönerisi gitmenin yolu


24

R yürütme sürümünü kontrol etmek için: R --version

Ya da R kabuğuna girdikten sonra version$version.string

DÜZENLE

Kurulu paketlerin sürümünü kontrol etmek için aşağıdakileri yapın.

Kütüphaneyi yükledikten sonra, sessionInfo ()

Ancak kurulu tüm paketlerin listesini bilmek için:

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

VEYA, belirli bir kitaplık sürümünü ayıklamak için, installed.packageyukarıdaki işlevi kullanarak bilgileri çıkardıktan sonra, yalnızca matrisin ilk boyutunda paketin adını kullanın.

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

Yukarıdakiler RANN kütüphanesinin ve grafik kütüphanesinin versiyonlarını basacaktır.


2
Soru, R sürümü değil paket sürümü ile ilgiliydi. Ve eğer koduma bak, kullanırım version.
mpiktas

packinfo[, "Version", drop=F]daha da güzel bir sonuç verir (paket adı çoğaltılmaz).
Marmite Bombacı

21

Teknik olarak, şu anda tüm cevaplar yanlış. packageVersionyüklenen paketin sürümünü döndürmez. Diske gider ve paket sürümünü oradan alır.

Bu çoğu durumda bir fark yaratmaz, ancak bazen yapar. Anlayabildiğim kadarıyla, yüklü bir paketin sürümünü almanın tek yolu oldukça hileli:

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

pkgpaket adı nerede .

EDIT: Bu işlevin ne zaman eklendiğinden emin değilim, ancak kullanabilirsiniz getNamespaceVersion, bu daha temiz:

getNamespaceVersion(pkg)

`:::`(pkg, .__NAMESPACE__.)$spec[["version"]]asNamespace()paket sürümünü alma yönteminin eş anlamlısıdır .
denizci

3
Bu cevap çok önemlidir. packageVersion()yalnızca size en iyi sonucu gösterir, installed.packages()ancak aynı paketin birden fazla sürümüne sahipseniz ve özellikle bir tane yüklerseniz, size doğru cevabı vermez.
calico_

1
Hughjonesd.shinyapps.io/rcheology başına R 1.7.0'dan beri piyasada bulunmaktadır.
krlmlr

20

Böyle bir şey deneyebilirsiniz:

  1. package_version(R.version)

  2. getRversion()


11

GUI çözümü:

RStudio kullanıyorsanız, Packagesbölmedeki paket sürümünü kontrol edebilirsiniz .

resim açıklamasını buraya girin


5

packageDescriptionYüklü paket açıklamasını almak için R yöntemini kullanın ve sürüm için şu şekilde kullanın $Version:

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

4

Önceki cevaplara dayanarak, R-sürümünü yazdırmanın basit bir alternatif yolu, ardından ad alanına yüklenen her paketin adı ve sürümü. Jupyter not defterinde çalışıyor sessionInfo()ve burada sorun yaşıyorum ve R --version.

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

Dışarı:

[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

Eski soru, ancak cevaplar arasında değil, yüklü tüm paketlere hızlı ve kısa bir genel bakış elde etmek için en sevdiğim komut:

(.packages())

Yüklü tüm paketlerin hangi sürümünün yüklü olduğunu görmek için, alt kümesi ayarlamak için yukarıdaki komutu kullanın installed.packages().

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

Sütun numarasını değiştirerek (paket sürümü için 3), installed.packages()okunması kolay bir matriste saklanan diğer bilgileri alabilirsiniz . Sürüm numarası ve bağımlılık için bir örnek:

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

1

Sistemde yüklü R paketlerinin sürümünü edinmek için aşağıdaki kodu kullanın:

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

1

Sadece help(package="my_package")gösterilen sürümü kullanın ve bakın.

Bu, aynı paketin başka sürümünün olmadığını varsayar .libPaths.


0

Search (), bir oturumdaki ekli paketlerin daha basitleştirilmiş bir listesini verebilir (yani, sessionInfo () tarafından verilen ayrıntılı bilgi olmadan)

search {base} - R Belgeler
Açıklama: Ekli paketlerin bir listesini verir. Arama()

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
Evet, ancak sessionInfo sürüm numarasını da verir. Benim durumumda, ikincisi genellikle daha önemlidir.
mpiktas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.