आर

2015-06-03 11 views
5

में "install.packages()" को कॉल करते समय गीथब से कुछ हिस्सों को इंस्टॉल करें, मैं एक पैकेज को CRAN पर रखना चाहता हूं। हालांकि, पैकेज वर्तमान में एक बाहरी सी मॉडल (आईएसडीए मानक मॉडल) का उपयोग करता है, जो सार्वजनिक पुन: वितरित लाइसेंस के तहत बनाया गया है। हालांकि, सीआरएएन प्रशासक इस सी मॉडल में अगर पैकेज को सीआरएएन पर रखने से इंकार कर देता है। तो क्या इस सी मॉडल के बिना पैकेज को सीआरएएन पर रखने के लिए वैसे भी है, और install.packages("my.package") पर कॉल करते समय, यह स्वचालित रूप से github.com/my_github से सी मॉडल डाउनलोड कर सकता है? अगर मैं क्रैन के लिए प्रस्तुतआर

.onLoad <- function(libname, pkgname) { 
    if (! "Github_pkg" %in% (all.available = TRUE)){ 
     devtools::install_github("myGithub/Github_pkg") 
    } 
} 

यह ठीक है:

अभी के लिए, मैं zzz.R में निम्नलिखित कोड लिखा था? या मुझे Dirk द्वारा drat पैकेज का उपयोग करना चाहिए? धन्यवाद!!

उत्तर

6

आप गिटहब पर अपना खुद का भंडार बनाने के लिए मेरे drat पैकेज में देख सकते हैं। मैं उदाहरण के लिए Rblpapi पैकेज होस्ट करने के लिए उपयोग करता हूं, जिसमें मैं this ghrr repository built using drat में योगदान करता हूं (और library from Bloomberg पर निर्भर करता है)।

यह सब काम करता है। सीआरएएन ने एक पैकेज भी स्वीकार कर लिया है जिसने ghrr drat repo को बाहरी भंडार के रूप में उपयोग किया है (लेकिन उस पैकेज को किसी अन्य कारण से हटा दिया गया है)।

आपको अभी भी अपने "प्राथमिक" पैकेज को सीआरएएन पर इस तरह से व्यवस्थित करने की आवश्यकता है कि "द्वितीयक" पैकेज केवल "सुगंध:" है क्योंकि वास्तविक निर्भरता भी सीआरएएन पर होनी चाहिए। लेकिन कम से कम यह आपको इन प्रक्रियाओं को स्वचालित करने का एक तरीका देता है।

+0

मैं इन दो सप्ताह में सीआरएएन को प्रस्तुत करूंगा, और मेरे पास एक प्रश्न है। अभी के लिए, मैंने 'ड्रैट 'का उपयोग नहीं किया बल्कि' zzz.R' में निम्नलिखित कोड लिखा:' .onLoad <- function (libname, pkgname) अगर (! "Github_pkg"%% में% (all.available = TRUE)) {DevTools :: install_github ("myGithub/Github_pkg")} '। क्या आपको लगता है कि अगर मैं सीआरएएन को जमा करता हूं तो यह ठीक है? और यदि 'ड्रैट' प्राथमिकता है, तो क्या आप मुझे 'ड्रैट' का उपयोग करके अपने 'गीथूब_पीकेजी' को सम्मिलित करने के बारे में थोड़ा और मार्गदर्शन दे सकते हैं? बहुत धन्यवाद!! –