2013-10-25 11 views
9

मैं आर में कुछ संकुल का उपयोग कर रहा हूं, लेकिन मैं ऐसी मशीन में स्क्रिप्ट चला रहा हूं जिसमें पहले से ही कुछ/सभी संकुल स्थापित हो सकते हैं या नहीं।इंस्टॉल नहीं किया गया पैकेज (लाइब्रेरी) स्थापित करें

पैकेज zoo, quantmod, data.table, ... और एक गुच्छा अधिक हैं।

यह मैंने कोशिश की है: क्या यह जांचने का कोई तरीका है कि इनमें से प्रत्येक पैकेज स्थापित है, अगर इसे इंस्टॉल नहीं किया गया है? मैं नहीं चाहता कि आर पहले से मौजूद किसी भी पैकेज को पुनर्स्थापित करने में समय बर्बाद कर दे।

यह है कि मैं क्या करने की कोशिश की है:

pckg = c("zoo", "tseries", "quantmod", "MASS", "graphics", "plyr", "data.table", "gridExtra") 

is.installed <- function(mypkg){ 
    is.element(mypkg, installed.packages()[,1]) 
} 

for(i in 1:length(pckg)) { 
    if (!is.installed(pckg[i])){ 
     install.packages(pckg[i]) 
    } 
} 

उस करने का एक बेहतर तरीका है?

इसके अलावा, मैं स्वचालित रूप से स्थापित मैं के लिए एक दर्पण स्थापित करने के लिए पता नहीं ऐसा करने के लिए कैसे है की जरूरत है।

धन्यवाद!

उत्तर

10

मैं इस सुविधा समारोह है कि मैं library के बजाय का उपयोग करें जो पैकेज को स्थापित करता है अगर यह याद आ रही है, तो require यह है:

usePackage <- function(p) { 
    if (!is.element(p, installed.packages()[,1])) 
     install.packages(p, dep = TRUE) 
    require(p, character.only = TRUE) 
} 

मामले में यदि आप विश्व स्तर पर क्रैन दर्पण चयन करने की आवश्यकता है, यहाँ एक है ऐसा करने का तरीका:

r <- getOption("repos") 
r["CRAN"] <- "http://cran.us.r-project.org" 
options(repos = r) 
rm(r) 
+1

ऐसा लगता है कि 'आवश्यकता() 'का व्यवहार आर संपादक पर निर्भर करता है। जबकि आरकेवर्ड में ऊपर वर्णित की आवश्यकता है() 'काम करता है, यह RStudio का उपयोग नहीं करता था। इसके बजाय, RStudio एक चेतावनी संदेश देता है। इसलिए 'आवश्यकता (XXX) || install.packages ("XXX") 'सुरक्षित है क्योंकि यह हमेशा आपके द्वारा उपयोग किए जा रहे संपादक के बावजूद काम करता है। – MERose

संबंधित मुद्दे