2012-12-22 20 views
6

मैं एक आर पैकेज विकसित कर रहा हूं जो rmongodb पैकेज को लपेटता है और मोंगोडीबी के साथ काम करने के लिए डेवलपर-अनुकूल इंटरफ़ेस बनाता है। पैकेज आंतरिक रूप से proto का उपयोग करता है।एक आर पैकेज से पर्यावरण निर्यात करना

मैं एक आद्य वस्तु (एक वातावरण) MongoDB कहा जाता है, जिसकी परिभाषा के माध्यम से एक भी कारखाना विधि निर्यात करना चाहते हैं है:

MongoDB <- proto(
    new = function(., ...) { 
    # Good stuff in here... 
    } 
) 

RStudio & devtools साथ और स्थानीय परीक्षण के दौरान विकास के दौरान यह प्रतीत नहीं होता एक समस्या होने के लिए। हालांकि, मैं कई समस्याओं का सामना कर रहा हूँ: ": 'MongoDB' नाम स्थान निर्भरता की आवश्यकता नहीं"

  • devtools::check() मेरी NAMESPACE फ़ाइल जो बनाता R CMD check के साथ विफल में एक import(MongoDB) डालने पर जोर देता है।

  • जब मैं इस आयात के निर्देश निकालने के लिए, R CMD check के साथ "वस्तु 'MongoDB' नहीं मिला" विफल रहता है मेरी testthat परीक्षण चलाने के दौरान, भले ही मैं मैन्युअल export(MongoDB) जोड़ें। हालांकि, devtools::test() RStudio में ठीक काम करता है।

क्या है आर संकुल से proto वस्तुओं, जो वातावरण कर रहे हैं, निर्यात के लिए अनुशंसित तरीका?

अद्यतन:

प्रति नीचे गेबर के सुझाव, मुझे यकीन है कि MongoDB.Rd वाणी डेटा के रूप में MongoDB (लिंक स्रोत है) कर दिया है। मुझे अभी भी MongoDB में विफलता मिल रही है जो परीक्षण में दिखाई नहीं दे रही है (जो testthat का उपयोग करती है)। मेरी DESCRIPTION फ़ाइल here और NAMESPACEhere है।

+0

आप ['RMongo'] (http: // cran) को देखना चाह सकते हैं।r-project.org/web/packages/RMongo/index.html) पैकेज भी .. यह जावा ड्राइवर का उपयोग करता है और 'rmongodb' पैकेज से उच्च स्तर का इंटरफ़ेस है। – Stennie

उत्तर

3

इस प्रयास करें:

  1. MongoDB आद्य वस्तु सार्वजनिक रूप से उपलब्ध कराने के लिए अपने NAMESPACE फ़ाइल में export("MongoDB") निर्दिष्ट करें।
  2. को अपने DESCRIPTION फ़ाइल में निर्दिष्ट करें ताकि यह एक्सेस होने पर स्वचालित रूप से लोड हो जाए।
  3. एक .Rd फ़ाइल को डेटासेट के रूप में दस्तावेज़ित करें।

इसे R CMD check पास करना चाहिए।

+0

सुझावों के लिए धन्यवाद, गैबर। मैं अभी भी उसी कारण से 'चेक' विफल करता हूं: परीक्षण लोड करते समय 'मोंगोडीबी' नहीं मिल सकता है। मैंने 'आरडी' फाइलों, 'विवरण' और 'NAMESPACE'' के लिंक के साथ प्रश्न अपडेट किया है। – Sim

+0

@ सिम, मैंने 3 अंकों का उपयोग करके संकुल बनाए हैं और उन्होंने काम किया है, इसलिए यह संभवतः आपके द्वारा उपयोग किए जा रहे विकास पर्यावरण के साथ एक समस्या है और आर नहीं। आपको उन उपकरणों के रखरखाव (ओं) के साथ इसे लेने की आवश्यकता हो सकती है । –

+0

बस यह सुनिश्चित करने के लिए कि मैं समझता हूं: चूंकि समस्या परीक्षण के साथ दिखाई देती है, क्या आप सुझाव दे रहे हैं कि मैं इस मुद्दे को @ हैडली के साथ उठाता हूं और देखता हूं कि यह 'testthat' (जहां परीक्षण हैं) या' devtools' (जो उत्सर्जित करता है) के बारे में है 'NAMESPACE' में संभावित रूप से गलत निर्देश)? – Sim

1

यह निर्देश:

import(MongoDB) 

मतलब है कि आप अपने पैकेज में MongoDB नाम स्थान आयात करते हैं। यदि आप सही ढंग से समझते हैं तो शायद आप जो चाहते हैं वह नहीं।

मुझे लगता है कि आप MongoDB वस्तु निर्यात करना चाहते हैं, तो

export(MongoDB) 

ठीक काम करना चाहिए।

+0

दाएं। 'आयात' कथन 'devtools' द्वारा डाला गया है, जो ठंडा नहीं है। हां, 'निर्यात (मोंगोडीबी)' काम नहीं करता है। – Sim

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