উপরের অনেকগুলি উত্তর (এবং এই প্রশ্নের সদৃশগুলিতে) নির্ভর করে installed.packages
যা খারাপ ফর্ম। ডকুমেন্টেশন থেকে:
কয়েক হাজার প্যাকেজ ইনস্টল হওয়ার পরে এটি ধীর হতে পারে, সুতরাং নামযুক্ত প্যাকেজ ইনস্টল করা আছে কিনা তা জানতে এটি ব্যবহার করবেন না (system.file বা Find.package ব্যবহার করুন) অথবা প্যাকেজ ব্যবহারযোগ্য কিনা তা জানতে (কল প্রয়োজন এবং চেক পরীক্ষা করুন) রিটার্ন মান) বা অল্প সংখ্যক প্যাকেজের বিশদ সন্ধান করতে (প্যাকেজডেস্ক্রিপশন ব্যবহার করুন)। এটি ইনস্টল করা প্যাকেজ প্রতি বেশ কয়েকটি ফাইল পড়তে হবে যা উইন্ডোজ এবং কিছু নেটওয়ার্ক-মাউন্ট করা ফাইল সিস্টেমে ধীর হবে।
সুতরাং, আরও ভাল পন্থাটি হ'ল প্যাকেজটি লোড করার চেষ্টা করা require
এবং লোডিং ব্যর্থ হলে ইনস্টল করা ( এটি পাওয়া না গেলে require
ফিরে আসবে FALSE
)। আমি এই বাস্তবায়ন পছন্দ করি:
using<-function(...) {
libs<-unlist(list(...))
req<-unlist(lapply(libs,require,character.only=TRUE))
need<-libs[req==FALSE]
if(length(need)>0){
install.packages(need)
lapply(need,require,character.only=TRUE)
}
}
যা এটির মতো ব্যবহার করা যেতে পারে:
using("RCurl","ggplot2","jsonlite","magrittr")
এইভাবে এটি সমস্ত প্যাকেজ লোড করে, তারপরে ফিরে গিয়ে সমস্ত অনুপস্থিত প্যাকেজ ইনস্টল করে (যা আপনি চাইলে ব্যবহারকারী প্যাকেজগুলি ইনস্টল করতে চান কিনা তা জিজ্ঞাসা করার জন্য একটি প্রম্পট toোকানো একটি সহজ জায়গা)। install.packages
প্রতিটি প্যাকেজের জন্য আলাদাভাবে কল করার পরিবর্তে এটি আনইনস্টল করা প্যাকেজগুলির পুরো ভেক্টরটিকে কেবল একবারই পাস করে।
এখানে একই ফাংশনটি রয়েছে তবে উইন্ডোজ সংলাপের সাহায্যে জিজ্ঞাসা করা হয়েছে যে ব্যবহারকারী অনুপস্থিত প্যাকেজগুলি ইনস্টল করতে চান কিনা
using<-function(...) {
libs<-unlist(list(...))
req<-unlist(lapply(libs,require,character.only=TRUE))
need<-libs[req==FALSE]
n<-length(need)
if(n>0){
libsmsg<-if(n>2) paste(paste(need[1:(n-1)],collapse=", "),",",sep="") else need[1]
print(libsmsg)
if(n>1){
libsmsg<-paste(libsmsg," and ", need[n],sep="")
}
libsmsg<-paste("The following packages could not be found: ",libsmsg,"\n\r\n\rInstall missing packages?",collapse="")
if(winDialog(type = c("yesno"), libsmsg)=="YES"){
install.packages(need)
lapply(need,require,character.only=TRUE)
}
}
}
R version 3.0.2 (2013-09-25) x86_64-w64-mingw32/x64 (64-bit)
।