ऊपर दिए गए बहुत सारे उत्तर (और इस प्रश्न के डुप्लिकेट पर) इस बात पर भरोसा करते हैं कि installed.packages
कौन सा फॉर्म खराब है। प्रलेखन से:
हजारों पैकेज स्थापित होने पर यह धीमा हो सकता है, इसलिए यह पता लगाने के लिए इसका उपयोग न करें कि क्या एक नामित पैकेज स्थापित किया गया है (सिस्टम का उपयोग करें। ढूँढें या 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")
इस तरह यह सभी पैकेजों को लोड करता है, फिर वापस जाता है और सभी लापता पैकेजों को स्थापित करता है (यदि आप चाहें, तो यह पूछने के लिए संकेत डालने के लिए एक आसान स्थान है कि क्या उपयोगकर्ता पैकेजों को स्थापित करना चाहता है)। 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)
।