2012-08-15 14 views
10

मुझे लगता है कि जैसे संबंधित पथ का उपयोग एक पैकेज के लिए कुछ कार्यों लिखा है:,पैकेज संबंधित पथ

foo <- function(x) { 
x <- readRDS("./data/bar.rds") 
return(x) 
} 

अब अगर मैं होने के लिए किए गए:

"./data/foobar.rds" 

यहाँ एक उदाहरण समारोह है पैकेज के विकास पथ में काम कर रहा है, यह काम करता है जैसा कि मैं उम्मीद करता हूं। लेकिन जब मैं पैकेज लोड करता हूं, तो यह पथ पैकेज के सापेक्ष पथ की बजाय मौजूदा कार्यशील निर्देशिका का उपयोग करता है।

यह कैसे सेट करता है कि पैकेज के भीतर कार्यों के लिए पथ पैकेज के सापेक्ष पथों के भीतर बनाए रखता है?

+1

देखें 'system.file' और' .path.package' – Andrie

+0

तो, 'x <की तरह कुछ? - readRDS (पेस्ट (system.file (पैकेज =" pkgName "),"/डेटा/बार .rds "सितम्बर =" "))'? –

+1

यदि आप कुछ ओएस स्वतंत्र चाहते हैं तो एक्स <- 'readRDS (file.path (system.file (package =" pkgName ")," डेटा "," bar.rds ")," – dickoa

उत्तर

5

एंड्री नोट्स के रूप में, आप system.file का उपयोग कर सकते हैं, जो "पैकेजों में फ़ाइलों का पूर्ण फ़ाइल नाम आदि प्राप्त करता है"

x <- readRDS(system.file("help", "aliases.rds", package="MASS")) 
+0

"सहायता" क्यों आवश्यक है? –

+0

'डीआईआर (system.file (" help ", package =" MASS "))' – dickoa

+0

@ ब्रैंडनबर्टेलसन - 'system.file()' पर कॉल '/MASS/help/aliases.rds', जहां फ़ाइल पढ़ने के लिए है। (सभी शुरुआती अज्ञात तर्क '...' से भरे हुए हैं, जो 'system.file()' उपनिर्देशिकाओं और फ़ाइलों के सेट के रूप में व्यवहार करता है, जिससे यह दिए गए पैकेज के भीतर पथ बनाता है।) –

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