2014-06-26 5 views
6

की स्थापना पर तोड़ता है, मैं अपना खुद का पैकेज बनाने के लिए roxygen का उपयोग कर रहा हूं। मैं एक समारोह है कि एक समस्या खड़ी कर रहा है है:रोक्सीजन सोचता है कि मेरा एक फ़ंक्शन एक एस 3 विधि है, और इसलिए मेरे पैकेज

##' extract.sig.metadata 
##' @param foo bar 
##' @author me 
##' @export 
extract.sig.metadata <- function(foo){ 
# does stuff 
} 

मैं अपने पैकेज कंकाल बना लिया है, और मैं का उपयोग किया है दस्तावेज़() roxygen टैग कार्रवाई करने के लिए (बनाने (मेरी-पैकेज) DevTools से के साथ)। हालांकि, जब मैं अपने पैकेज स्थापित करने का प्रयास है, यह विफल रहता है:

... * मदद सूचकांक ** इमारत पैकेज सूचकांक ** परीक्षण स्थापित पैकेज लोड किया जा सकता है, तो त्रुटि को स्थापित: ऑब्जेक्ट 'निकालने' जबकि लोड हो रहा है नाम स्थान 'मेरे-पैकेज' नहीं मिला त्रुटि: लोड करना विफल हुआ निष्पादन रुका

मैं यकीन है कि roxygen सोचता है कि कि extract.sig.metadata एक S3 विधि, यानी निर्यात की एक विशेष रूप है कर रहा हूँ(), लेकिन यह फ़ंक्शन निर्यात() नहीं ढूंढ रहा है, और इसलिए यह टूट रहा है। लेकिन यह एक एस 3 विधि नहीं है, यह सिर्फ extract.sig.metadata नामक एक फ़ंक्शन है। अगर मैं रोड कोड में देखो,/उपयोग टैग अजीब लग रहा है:

\usage{ 
\method{extract}{sig.metadata}(spec.df, var = "product_name", 
    ratio.cutoff = 0.001, prob.modifer = 3, frequency.cutoff = NA, 
    verbose = F, assign.to.global.env = FALSE, use.bigrams = T, clean = T, 
    ngram.dupe.n.cutoff = 0.1, max.obs = 10000) 
} 

मैं extractSigMetadata को नाम बदल करते हैं, समस्या तकनीकी रूप से तय हो गई है, और .Rd कोड में परिवर्तन,

\usage{ 
extractSigMetadata(foo) 
} 

लेकिन मुझे वास्तव में मेरे फ़ंक्शन का नाम बदलना नहीं होगा (मेरे पास पैकेज में एक ही समस्या है, और इन्हें स्क्रिप्ट के समूह में उपयोग किया जाता है - यह मेरे लिए बदलने के लिए एक बड़ा दर्द होगा नामकरण स्कीमा नहीं)।

---> क्या कोई जानता है कि मैं roxygen कैसे कह सकता हूं कि यह सिर्फ एक सामान्य कार्य है और अजीब s3 विधि नहीं है? मुझे लगता है कि यह @method टैग के साथ कुछ करने के लिए है, लेकिन मुझे नहीं पता कि यह काम करने के लिए इसे उचित तरीके से कैसे उपयोग किया जाए। धन्यवाद!!!

+0

रॉयक्सजेन का कौन सा संस्करण आप चल रहे हैं? आपके पास 'निकालने 'नामक एक सामान्य कार्य नहीं है, क्या आप? – MrFlick

+1

नहीं, निकालने का कोई सामान्य संस्करण नहीं है, लेकिन आर। ट्यूल्स ने किया - यही समस्या पैदा कर रहा था। हालांकि, '@ export' के बजाय' @export extract.sig.metadata' का उपयोग करके इसे ठीक किया गया है! –

उत्तर

5

इसे फिक्स्ड!

@export के बजाय स्पष्ट रूप से roxygen बताता है कि extract.sig.metadata संपूर्ण फ़ंक्शन नाम है, और यह समस्या को हल करता है। इस विशेष मामले में, मेरे पास एक सामान्य निकास कार्य नहीं था, लेकिन आर। ऑटिल्स (एक पैकेज जो मेरा पैकेज निर्भर नहीं था लेकिन फिर भी लोड किया गया था) में एक निकास कार्य था।

आशा है कि यह भविष्य में किसी भी समस्या के साथ किसी को भी मदद करेगा। धन्यवाद!

पीएस हैडली बेहतर नामकरण प्रथाओं का सुझाव देता है, जिसे मैं भविष्य में पालन करने का प्रयास करूंगा।

+1

मुझे यह समस्या एक बार मेरे साथ हुई थी - मेरा उप-समाधान समाधान फ़ंक्शन का नाम बदलना था। – Dason

+0

क्या यह अभी भी काम करता है? '@export full.name' अभी भी मुझे \ \ उपयोग {\ method {full} {name}', निराशाजनक देता है – rawr

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