2012-12-28 12 views
13

मैं devtools का उपयोग कर आंतरिक उपयोग के लिए एक पैकेज बना रहा हूं। मैं फ़ाइल/कनेक्शन से डेटा में पैकेज लोड करना चाहता हूं (जो दिनांक पैकेज के आधार पर अलग है)। डेटा बड़ा-आश है इसलिए पैकेजिंग के दौरान डेटा को पार्सिंग और लोड करने की ऑनटाइम लागत बेहतर है।आर पैकेज के साथ अर्ध-लाइव डेटासेट वितरित करने के लिए कौन सी विधियां मौजूद हैं?

वर्तमान में, मेरे पास डेटा है। R/ के तहत फ़ाइल जो पैकेज-स्तर चर के लिए डेटा असाइन करती है, मान पैकेज स्थापना के दौरान असाइन किए जाते हैं (या कम से कम ऐसा होने वाला प्रतीत होता है)। आदर्श सेटअप से कम यह ज्यादातर काम करता है। पैकेज के सभी उदाहरणों को एक ही डेटा के लिए प्राप्त करने के लिए मुझे पैकेज के साथ डेटा फ़ाइल को वितरित करना होगा (वर्तमान में इसे पैकेज बनाने से पहले एक सहायक स्क्रिप्ट द्वारा inst/ पर कॉपी किया जा रहा है) इसके बजाय इसे सभी को एक साथ पैक किया जा सकता है। इसके लिए अवश्य ही एक बेहतर तरीका होना चाहिए। '

जैसे:

  • पैकेज निर्माण के दौरान .rda फ़ाइलें उत्पन्न (लेकिन इस पैकेज के दौरान एक ही कोड स्थापित नहीं चल रहा है की आवश्यकता है)
    • मैं एक Makefile के साथ ऐसा कर सकते हैं, लेकिन है कि overkill
    • की तरह लगता है
    • क्या मेरे पास आर कोड हो सकता है जो केवल पैकेज बिल्डिंग के दौरान चलाया जाता है और इंस्टॉल के दौरान नहीं?
    • data/
      • में
    • भागो आर कोड लेकिन डेटा सवाल में पैकेज में कोड का उपयोग कर munged है। मैं ठीक कर सकते हैं कि साथ Collate (मुझे लगता है कि) लेकिन फिर मैं (लेकिन उस जटिलता के साथ मैं भी एक Makefile उपयोग कर सकते हैं?)
  • एक से दो संकुल निर्माण, .R फ़ाइलों के सभी की व्यवस्था बनाए रखने के लिए है मैं चाहता हूं कि सभी कोड के साथ, डेटा के साथ एक।
  • स्पष्ट, चतुर चीजें जिनके बारे में मैंने सोचा नहीं है।

tl; dr: तैनाती के लिए जमे हुए आर पैकेज में गतिशील रूप से बदलते डेटा का स्नैपशॉट जोड़ने के कुछ तरीके क्या हैं?

+1

दो पैकेजों का निर्माण बहुत समझ में आता है (अलग-अलग डेटा पैकेज वाले अन्य पैकेज हैं - अधिकतर डेटा डेटा वाले पैकेज) –

+0

@ बेनबॉल्कर यह निष्कर्ष है कि मैं आया हूं, लेकिन क्या वास्तव में कोई अन्य उचित है तरीकों? – Tyler

+2

मुझे नहीं पता, थोड़ा सा इसके बारे में सोचने के बाद यह इसके बारे में जाने के लिए एक बहुत ही उचित तरीका लगता है; आपको आर इंफ्रास्ट्रक्चर (आलसी लोडिंग, प्रलेखन इत्यादि) मिलता है, और आपको फ़ंक्शन संस्करणों और डेटा संस्करणों के बीच एक decoupling मिलता है। मैं अच्छी तरह से 'devtools' के आसपास अपना रास्ता नहीं जानता, लेकिन यदि आप कस्टम क्रैन-जैसी रिपोजिटरी का उपयोग कर रहे थे तो आप आसानी से कुछ फ़ंक्शन वर्जनिंग कर सकते हैं और' फ़ंक्शंस 'में रैपर फ़ंक्शंस शामिल कर सकते हैं ताकि उपयोगकर्ताओं को उचित संस्करण स्थापित करने की अनुमति मिल सके। 'डेटा' पैकेज ... –

उत्तर

2

@BenBolker points out in the comments above के रूप में, डेटासेट को एक अलग पैकेज में विभाजित करना समुदाय में सबसे महत्वपूर्ण है (सबसे विशेष रूप से कोर पैकेज datasets) और इसमें अतिरिक्त लाभ हैं।

डेटा से फ़ंक्शंस को अलग करने से डेटा के ऐतिहासिक संस्करणों पर काम करने के लिए अद्यतित कार्यों के साथ काम करना आसान हो जाता है।

वर्तमान में मेरे पास tools-to-munge पैकेज और things-to-munge पैकेज है। एक सहायक स्क्रिप्ट का उपयोग करके मैं tools-to-munge का निर्माण कर सकता हूं और संकुल के उचित वृद्धि संस्करण को इंगित करने के लिए दोनों संकुलों के DESCRIPTION में Suggests (या Depends) सेट कर सकता हूं। नए tools-to-munge पैकेज के निर्माण के बाद मैं tools-to-munge पैकेज में फ़ंक्शंस का उपयोग करके आवश्यक things-to-munge पैकेज बना सकता हूं।

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