2012-04-25 21 views
23

ठीक है, आर पैकेज लिखने का पहला प्रयास है और मैं अटक गया हूं।अपने स्वयं के आर पैकेज लिखते समय, मुझे अन्य पैकेजों को सही ढंग से आयात करने के लिए प्रतीत नहीं होता है

package.skeleton("pkg",code_files=some.filenames) 
roxygenize("okg") 

मैं roxygen2 उपयोग कर रहा हूँ और मेरी "pkg-package.R" फ़ाइल में निम्न आयात किया है:: यहाँ कैसे मैं पैकेज बनाने है

@import data.table zoo lubridate 

एक टर्मिनल से, मैं तो चलाएँ:

R CMD build pkg 
R CMD check pkg 
R CMD install pkg 
जांच चरण के दौरान

, मैं निम्नलिखित चेतावनी मिलती है:

** आलसी लोड हो रहा है
के लिए पैकेज की तैयारी कर चेतावनी: पिछला आयात 'घंटे' की जगह जब 'lubridate' लोड हो रहा है
चेतावनी: पिछला आयात 'mday' की जगह जब 'lubridate'
चेतावनी लोड हो रहा है: पिछला आयात की जगह 'माह' जब लोड हो रहा है 'lubridate'
चेतावनी: पिछला आयात 'wday' की जगह जब 'lubridate'
चेतावनी लोड हो रहा है: पिछला आयात की जगह 'सप्ताह' जब 'lubridate'
चेतावनी लोड हो रहा है: पिछला आयात 'yday' की जगह जब 'lubridate' लोड हो रहा है
चेतावनी: 'लुब्रिडैट लोड करते समय पिछले आयात' वर्ष 'को बदलना ई '
** मदद
* मदद सूचकांक
** इमारत पैकेज सूचकांक स्थापित करने ...
** परीक्षण करता है, तो स्थापित पैकेज
चेतावनी संदेशों लोड किया जा सकता:
1: पिछला आयात की जगह' घंटा lubridate '
2: पिछला आयात की जगह' 'जब लोड हो रहा है' mday lubridate '
3: पिछला आयात की जगह' 'जब लोड हो रहा है': wday 'जब लोड महीने lubridate' पिछला आयात की जगह
4 '' जब लोड हो रहा है ' आईएनजी 'lubridate'
5: पिछला आयात की जगह 'सप्ताह' जब 'lubridate'
6 लोड हो रहा है: पिछला आयात 'yday' की जगह जब 'lubridate'
7 लोड हो रहा है: पिछला आयात की जगह 'साल' जब 'lubridate'

लोड हो रहा है

मुझे सच में यकीन नहीं है कि उन लोगों को क्या करना है, लेकिन वे नेमस्पेस में ओवरराइटिंग सामग्री से सामान्य चेतावनियों की तरह लगते हैं।किसी भी मामले में, मैं पैकेज स्थापित करने में सक्षम हूँ, लेकिन यहाँ क्या होता है जब मैं इसे इस्तेमाल करने की कोशिश:

पुस्तकालय (pkg)
अधिभावी + और - के लिए POSIXt, दिनांक तरीकों और difftime
चेतावनी संदेश:
1: पिछला आयात 'घंटे' की जगह जब 'lubridate'
2 लोड हो रहा है: पिछला आयात 'mday' की जगह जब 'lubridate'
3 लोड हो रहा है: पिछला आयात की जगह 'माह' जब 'lubridate'
लोड हो रहा है 4: पिछला आयात 'wday' की जगह जब 'lubridate'
5 लोड हो रहा है: पिछला आयात की जगह 'सप्ताह' जब 'lubridate'
6 लोड हो रहा है: पिछला आयात 'yday' की जगह जब 'lubridate'
7 लोड हो रहा है: पिछला आयात की जगह 'साल lubridate '
घ <' जब लोड हो रहा है '- my.function (ARG1, aRG2) मैच में
त्रुटि (एक्स, एक्स): समारोह नहीं पा सके "MATCH" के

ट्रैस बैक का उपयोग करना(), मुझे पता चला कि यह दुरी पैदा कर रहा है merge.zoo() को कॉल करने के लिए एक कॉल। तो मैंने अपने आर सत्र और voila के दौरान हाथ से चिड़ियाघर लोड करने की कोशिश की, तो समारोह त्रुटि संदेश के बिना सही ढंग से काम करता है।

मैंने "pkg-package.R" फ़ाइल, साथ ही साथ NAMESPACE दोनों में आयात के आदेश को बदलने की कोशिश की है। मैंने कहीं और पाया कुछ के आधार पर, मैंने कोई आयात नहीं जोड़ा है या वर्णन पर निर्भर करता है। मदद?

+1

मैं इन संकुलों को 'विवरण' में आपके 'निर्भर' में डालने की अनुशंसा करता हूं। –

+1

'आयात', मुझे विश्वास है कि – baptiste

उत्तर

25

चेतावनियां इसलिए हैं क्योंकि डेटा.table और lubridate दोनों एक प्रतीक को परिभाषित करते हैं hour, आदि; data.table::hour और lubridate::hour देखें। आप पूरे पैकेज की बजाय लुब्रिडेट/डेटा.table से केवल फ़ंक्शंस आयात करके इसे टाल सकते हैं; एक मानक NAMESPACE फ़ाइल में

importFrom(lubridate, hour) 

उदाहरण के लिए होगा। roxygen2 में आप टैग का प्रयोग करेंगे:

@importFrom lubridate hour 

मैच समस्या शायद इसलिए है क्योंकि merge गलत तरीके से भेजने की है, शायद इसलिए क्योंकि चिड़ियाघर जैसा कि इसके नाम अंतरिक्ष S3method(merge, zoo) में नहीं बल्कि export(merge.zoo) से लेखन आर एक्सटेंशन में वर्णित है, 1.6.2 होनी चाहिए, । यहां समाधान zoo, packageDescription('zoo')$Maintainer के रखरखाव से संपर्क करना है (रखरखाव आर में पर्याप्त रूप से ज्ञात है जो मुझे लगता है कि मैंने गलत निदान किया है ...)।

+0

यह एक उपयोगी उत्तर है, लेकिन केवल एक अनुवर्ती है। इसलिए यदि मैं सिर्फ "घंटा" जैसे एक समारोह को आयात करता हूं, तो क्या मुझे इसके सभी आंतरिक या संभावित निजी कार्यों को भी आयात करने की आवश्यकता है? या किसी भी निजी कार्य या आंतरिक निर्भरताओं को आयात करने के लिए 'आयात करें' से पता चल जाएगा? – krishnab

+2

@ कृष्णबैब फ़ंक्शंस उन प्रतीकों की तलाश करते हैं जो वे पहले अपने पर्यावरण में उपयोग करते हैं, फिर उस वातावरण में जिसमें फ़ंक्शन परिभाषित किया गया था, इसलिए डेटा.table फ़ंक्शंस डेटाटेबल :: घंटे का उपयोग स्वचालित रूप से मिलेगा। –

+2

क्या होता है जब आपको विशिष्ट ऑब्जेक्ट क्लास तक पहुंच प्राप्त करने के लिए एकाधिक पैकेजों के लिए आयात का उपयोग करने की आवश्यकता होती है और उनके पास नाम विवाद होते हैं? मैं स्पैटस्टैट और रास्टर (क्षेत्र, घूमना, शिफ्ट) के साथ इसमें भाग रहा हूं। मैं आयात का उपयोग नहीं कर सकता क्योंकि मैं दोनों से कई कार्यों का उपयोग कर रहा हूं और पैकेज कक्षाओं की आवश्यकता है। क्या तीन रास्टर कार्यों को मुखौटा करने का कोई तरीका है जो स्पैटस्टैट के साथ संघर्ष करते हैं? मुझे ध्यान रखना चाहिए कि बस उपयोग में निर्भर करता है काम नहीं कर रहा है। –

1

MATCH त्रुटि के लिए अस्थायी कामकाज के रूप में, मुझे पैकेज को Depends: पैकेज के DESCRIPTION फ़ाइल के तहत सफलतापूर्वक सूचीबद्ध किया गया है।

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

  • कोई संबंधित समस्या नहीं^_^