কোন প্যাকেজ সংস্করণটি আর-এ লোড হয়েছে তা কীভাবে খুঁজে বের করবেন?


405

আমি কীভাবে আমার বিশ্ববিদ্যালয়ের ক্লাস্টারটি ব্যবহার করব তা নির্ধারণের প্রক্রিয়াধীন। এটিতে 2 টি সংস্করণ ইনস্টল করা আছে। সিস্টেমের প্রশস্ত আর 2.11 (দেবিয়ান 6.0) এবং অ-মানক স্থানে আর 2.14.2 2.

আমি বরফের সাথে এমপিআই ব্যবহার করার চেষ্টা করছি। আমি যে কোডটি চালানোর চেষ্টা করছি তা নিম্নলিখিত is

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)। এখন যখন আমি আর 2.14.2 এর সাথে এটি করার চেষ্টা করি তখন আমি নিম্নলিখিত বার্তাটি পাই:

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

সুতরাং দেখে মনে হচ্ছে যে আর 2.11 এর জন্য সংকলিত প্যাকেজ স্নো সংস্করণটি লোড করে। আমি আমার হোম ফোল্ডারে আর 2.14 এর নীচে তুষার ইনস্টল করেছি এবং আমি নিম্নলিখিত কোডগুলি আমার কোডটিতে যুক্ত করেছি:

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

এবং ত্রুটির আগে আউটপুট নিশ্চিত করে যে আমি সত্যই আর 2.14.2 চালাচ্ছি এবং আমার আর প্যাকেজ ফোল্ডারটি অনুসন্ধানের পথে প্রথম is তবে আমি তবুও ত্রুটি পেয়েছি।

সুতরাং আমার প্রশ্নটি হ'ল আমি কীভাবে নির্ধারণ করব যে প্যাকেজের কোন সংস্করণ আর-এ লোড হয়েছে? আমি 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")

[১] '০.০.৯'

বা:

"Rmpi" %in% loadedNamespaces()

1
ধন্যবাদ। আমার ভুলটি ছিল প্যাকেজ লোড হওয়ার আগে সেশন ইনফোট আউটপুট করা। শেষ পর্যন্ত দেখা গেল যে প্যাকেজের সঠিক সংস্করণটি লোড হয়েছে, তবে আর এটি পুরানো সংস্করণ সম্পর্কে অভিযোগ করেছে। আমার নিজস্ব স্থানীয় সংস্করণ আর ইনস্টল করে এবং সমস্ত কিছুই কবজির মতো কাজ করেছে।
এমপিক্টাস

45
TMI! packageVersion()বেশিরভাগ ক্ষেত্রেই অনেক বেশি ভাল
লুই ম্যাডডক্স

1
আমি ব্যবহার করার পরামর্শ দেব না sessionInfo। ? এর sessionInfo নোট দেখুন: " 'লোড' প্যাকেজ ও নামব্যবধান উপর তথ্য বর্তমান সংস্করণ অবস্থানে ইনস্টল প্যাকেজ থেকে লোড করা হয়েছে: এটি ভুল হতে পারে যদি অন্য প্রক্রিয়া সেশনে প্যাকেজ পরিবর্তন করা হয়েছে।" সুতরাং: আপনি যদি জানতে চান যে প্যাকেজটি লোড হয়েছে কিনা, আরও ভাল ব্যবহার করুন "Rmpi" %in% loadedNamespaces(); যদি আপনি কোনও নির্দিষ্ট স্থানে কোন সংস্করণ ইনস্টল করা আছে তা জানতে চাইলে আরও ভাল ব্যবহার করুনpackageVersion(lib.loc = ...)
রকসায়েন্স

উত্তরের জন্য নিচের Gábor এর উত্তর দেখার যে আয় একটি সংস্করণ বর্তমানে লোড প্যাকেজ (যা অন-ডিস্ক সংস্করণ থেকে আলাদা হতে পারে): stackoverflow.com/a/37369263/946850
krlmlr

273

packageVersionপ্যাকেজের কোন সংস্করণটি লোড হয়েছে তা দেখতে আপনি ব্যবহার করতে পারেন

> packageVersion("snow")
[1]0.3.9

যদিও এটি দেখে মনে হচ্ছে আপনি যে সংস্করণটি চালাচ্ছেন তা আপনি দেখতে চান, 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")]

উপরেরগুলি আরএএনএন লাইব্রেরি এবং গ্রাফিক্স লাইব্রেরির সংস্করণগুলি মুদ্রণ করবে।


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
প্রতি hughjonesd.shinyapps.io/rcheology এটা তাড়াতাড়ি আর 1.7.0 যেমন হিসাবে উপলব্ধ যেহেতু প্রাপ্তিসাধ্য হয়েছে।
krlmlr

20

আপনি এরকম কিছু চেষ্টা করতে পারেন:

  1. package_version(R.version)

  2. getRversion()


11

জিইউআই সমাধান:

আপনি যদি আর স্টুডিও ব্যবহার করছেন তবে আপনি Packagesফলকে প্যাকেজ সংস্করণটি পরীক্ষা করতে পারেন ।

এখানে চিত্র বর্ণনা লিখুন


5

packageDescriptionইনস্টল করা প্যাকেজ বিবরণ পেতে আর পদ্ধতিটি ব্যবহার করুন এবং সংস্করণটির জন্য কেবল এটি ব্যবহার করুন $Version:

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

সিস্টেমে ইনস্টল করা আর প্যাকেজগুলির সংস্করণটি পেতে নিম্নলিখিত কোডটি ব্যবহার করুন:

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

1

সহজভাবে ব্যবহার করুন help(package="my_package")এবং প্রদর্শিত সংস্করণটি দেখুন।

এটি ধরে নিয়েছে যে একই সাথে অন্য কোনও প্যাকেজ সংস্করণ নেই .libPaths


0

অনুসন্ধান () সেশনে সংযুক্ত প্যাকেজগুলির আরও সরল তালিকা দিতে পারে (যেমন, সেশনআইএনফো () দ্বারা প্রদত্ত বিস্তারিত তথ্য ব্যতীত)

অনুসন্ধান {বেস} - আর ডকুমেন্টেশন
বর্ণনা: সংযুক্ত প্যাকেজগুলির একটি তালিকা দেয়। অনুসন্ধান করুন ()

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
হ্যাঁ, তবে সেশনআইএনফোও সংস্করণটির নম্বর দেয়। আমার ক্ষেত্রে পরেরটি সাধারণত আরও গুরুত্বপূর্ণ।
এমপিটিকাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.