कैसे पता करें कि आर में कौन सा पैकेज संस्करण लोड किया गया है?


405

मैं यह पता लगाने की प्रक्रिया में हूं कि मेरे विश्वविद्यालय क्लस्टर का उपयोग कैसे करें। इसमें R के 2 संस्करण स्थापित हैं। गैर-मानक स्थान में सिस्टम वाइड आर 2.11 (डेबियन 6.0) और आर 2.14.2।

मैं बर्फ के साथ एमपीआई का उपयोग करने की कोशिश कर रहा हूं। मैं जिस कोड को चलाने का प्रयास कर रहा हूं वह निम्नलिखित है

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

यह आर 2.11 पर समस्याओं के बिना काम करता है। (मैं स्क्रिप्ट के साथ लॉन्च mpirun -H localhost,n1,n2,n3,n4 -n 1 R --slave -f code.R)। अब जब मैं इसे आर २.१४.२ के साथ करने की कोशिश करता हूं, तो मुझे निम्न संदेश मिलता है:

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

इसलिए ऐसा लगता है कि R 2.11 के लिए संकलित पैकेज हिम संस्करण को लोड करता है। मैंने अपने होम फोल्डर में R 2.14 के तहत बर्फ लगाई है और मैंने अपने कोड में निम्न पंक्तियाँ जोड़ी हैं:

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

और त्रुटि से पहले आउटपुट यह पुष्टि करता है कि मैं वास्तव में R 2.14.2 चला रहा हूं और मेरा R संकुल फ़ोल्डर पहले खोज पथ में है। लेकिन मुझे अभी भी त्रुटि मिलती है।

तो मेरा सवाल यह है कि मैं यह कैसे निर्धारित करूं कि पैकेज का कौन सा संस्करण आर में लोड है? मैं उन installed.packagesसभी पैकेजों के साथ देख सकता हूं जो स्थापित हैं, इसलिए शायद कुछ फ़ंक्शन है जो लोड किए गए पैकेजों के लिए समान जानकारी सूचीबद्ध करता है?


1
क्या आपको इस मुद्दे का अच्छा समाधान मिला? मेरे अनुभव में और जैसा कि आर मदद इंगित करता है, दोनों सत्रइन्फो और पैकेजवर्जन वर्तमान संस्करण को उस स्थान पर स्थापित किया गया है जिसे पैकेज से लोड किया गया था: यह गलत हो सकता है यदि सत्र के दौरान कोई अन्य प्रक्रिया पैकेज बदल रही है।
रॉकसाइंस

जवाबों:


519

आप इसे sessionInfo()पूरा करने के लिए उपयोग कर सकते हैं ।

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

हालांकि, टिप्पणियों और नीचे दिए गए जवाब के अनुसार, बेहतर विकल्प हैं

> packageVersion("snow")

[१] '0.3.9'

या:

"Rmpi" %in% loadedNamespaces()

1
धन्यवाद। मेरी गलती पैकेज लोड करने से पहले sessionInfo को आउटपुट करने की थी। अंत में यह पता चला कि पैकेज का सही संस्करण लोड किया गया था, लेकिन आर ने अभी भी पुराने संस्करण के बारे में शिकायत की थी। आर का अपना स्थानीय संस्करण स्थापित किया और सब कुछ एक आकर्षण की तरह काम किया।
एमपिकटस

45
टीएमआई! packageVersion()ज्यादातर मामलों में बेहतर है
लुई मैडॉक्स

1
मैं उपयोग करने की सलाह नहीं दूंगा sessionInfo। का नोट देखें? SessionInfo: "पैकेज लोड किए गए 'और नामस्थानों की जानकारी वर्तमान संस्करण को उस स्थान पर स्थापित किया गया है जहाँ से पैकेज लोड किया गया था: यह गलत हो सकता है यदि सत्र के दौरान कोई अन्य प्रक्रिया पैकेज बदल रही है।" तो: यदि आप जानना चाहते हैं कि पैकेज को लोड किया गया है या नहीं, तो बेहतर उपयोग करें "Rmpi" %in% loadedNamespaces(); यदि आप जानना चाहते हैं कि कौन सा संस्करण किसी विशिष्ट स्थान पर स्थापित है, तो बेहतर उपयोग करेंpackageVersion(lib.loc = ...)
RockScience

नीचे दिए गए पैकेज के संस्करण (जो ऑन-डिस्क संस्करण से अलग हो सकता है) के संस्करण को वापस करने के लिए नीचे दिए गए गैबोर का उत्तर देखें : stackoverflow.com/a/37369263/946850
krlmlr

273

आप यह packageVersionदेखने के लिए उपयोग कर सकते हैं कि पैकेज का कौन सा संस्करण लोड किया गया है

> packageVersion("snow")
[1]0.3.9

हालाँकि ऐसा लगता है कि आप देखना चाहते हैं कि R का कौन सा संस्करण चल रहा है, जिस स्थिति में @ जस्टिन का sessionInfoसुझाव जाना है


24

आर निष्पादित के संस्करण की जांच करने के लिए: R --version

या आप आर शेल में हैं उसके बाद की सामग्री प्रिंट करें version$version.string

संपादित करें

स्थापित पैकेजों के संस्करण की जांच करने के लिए निम्नलिखित कार्य करें।

लाइब्रेरी लोड करने के बाद, आप निष्पादित कर सकते हैं sessionInfo ()

लेकिन सभी स्थापित पैकेजों की सूची जानने के लिए:

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

या किसी विशिष्ट लाइब्रेरी संस्करण को निकालने के लिए, एक बार जब आप installed.packageफ़ंक्शन का उपयोग करके जानकारी निकाल लेते हैं, तो बस मैट्रिक्स के पहले आयाम में पैकेज के नाम का उपयोग करें।

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

ऊपर RANN लाइब्रेरी और ग्राफिक्स लाइब्रेरी के संस्करण प्रिंट होंगे।


2
सवाल पैकेज संस्करण के बारे में था, न कि आर संस्करण। और अगर मेरे कोड को देखें, तो मैं उपयोग करता हूं version
एमपिकटस

packinfo[, "Version", drop=F]और भी सुंदर परिणाम देता है (पैकेज का नाम डुप्लिकेट नहीं है)।
मर्माइट बॉम्बर

21

तकनीकी रूप से, इस समय सभी उत्तर गलत हैं। packageVersionलोड किए गए पैकेज का संस्करण वापस नहीं करता है। यह डिस्क पर जाता है, और वहां से पैकेज संस्करण प्राप्त करता है।

इससे ज्यादातर मामलों में फर्क नहीं पड़ेगा, लेकिन कभी-कभी ऐसा होता है। जहां तक ​​मैं बता सकता हूं, एक लोड किए गए पैकेज के संस्करण को प्राप्त करने का एकमात्र तरीका बल्कि हैकिश है:

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

pkgपैकेज का नाम कहां है

संपादित करें: मुझे यकीन नहीं है कि जब यह फ़ंक्शन जोड़ा गया था, लेकिन आप इसका उपयोग भी कर सकते हैं getNamespaceVersion, यह क्लीनर है:

getNamespaceVersion(pkg)

`:::`(pkg, .__NAMESPACE__.)$spec[["version"]]asNamespace()पैकेज संस्करण प्राप्त करने की विधि का एक पर्याय है ।
समुद्र में

3
यह उत्तर इतना महत्वपूर्ण है। packageVersion()केवल आपको शीर्ष परिणाम दिखाता है, installed.packages()लेकिन यदि आपके पास एक ही पैकेज के कई संस्करण हैं, और आप एक विशेष रूप से लोड करते हैं, तो यह आपको सही उत्तर नहीं देगा।
कैलिको_

1
प्रति ह्यूगोजोन्स.शिन्यप्पेसियो / पुरातत्व यह आर 1.7.0 के रूप में जल्दी से उपलब्ध है।
krlmlr

20

आप कुछ इस तरह की कोशिश कर सकते हैं:

  1. package_version(R.version)

  2. getRversion()


11

जीयूआई समाधान:

यदि आप RStudio का उपयोग कर रहे हैं तो आप Packagesफलक में पैकेज संस्करण की जाँच कर सकते हैं ।

यहां छवि विवरण दर्ज करें


5

packageDescriptionस्थापित पैकेज विवरण प्राप्त करने और संस्करण के $Versionरूप में उपयोग करने के लिए R विधि का उपयोग करें :

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

4

पिछले उत्तरों के आधार पर, आर-संस्करण को प्रिंट करने का एक सरल वैकल्पिक तरीका है, इसके बाद नाम स्थान में लोड किए गए प्रत्येक पैकेज का नाम और संस्करण है। यह जुपिटर नोटबुक में काम करता है, जहाँ मुझे चलने में परेशानी होती है sessionInfo()और R --version

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

बाहर:

[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

पुराने प्रश्न, लेकिन उत्तरों के बीच नहीं सभी लोड किए गए पैकेजों का त्वरित और संक्षिप्त अवलोकन प्राप्त करने के लिए मेरा पसंदीदा आदेश है:

(.packages())

सभी लोड किए गए पैकेजों में कौन सा संस्करण स्थापित है, यह देखने के लिए, उपर्युक्त कमांड का उपयोग करें installed.packages()

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

कॉलम संख्या (पैकेज संस्करण के लिए 3) को बदलकर आप किसी भी अन्य जानकारी installed.packages()को आसानी से पढ़े जाने वाले मैट्रिक्स में संग्रहीत कर सकते हैं । नीचे संस्करण संख्या और निर्भरता के लिए एक उदाहरण दिया गया है:

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

1

सिस्टम में स्थापित R संकुल के संस्करण को प्राप्त करने के लिए निम्नलिखित कोड का उपयोग करें:

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

1

बस help(package="my_package")दिखाए गए संस्करण का उपयोग करें और देखें।

यह मानता है कि इसमें कोई अन्य पैकेज संस्करण नहीं हैं .libPaths


0

खोज () सत्र में संलग्न पैकेजों की एक अधिक सरलीकृत सूची दे सकते हैं (यानी, sessionInfo द्वारा दी गई विस्तृत जानकारी के बिना) ()

खोज {आधार} - आर प्रलेखन
विवरण: संलग्न पैकेजों की एक सूची देता है। खोज()

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
हां, लेकिन sessionInfo संस्करण संख्या भी देता है। मेरे मामले में उत्तरार्द्ध आमतौर पर अधिक महत्वपूर्ण है।
एमपिकैटस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.