2015-06-16 10 views
5

मैं एक आर पैकेज लिख रहा हूं और मैं एक अन्य पैकेज (plotKML) से एक फ़ंक्शन का उपयोग करना चाहता हूं। इस बाहरी पैकेज में इतनी सारी निर्भरताएं हैं कि मैं नहीं चाहता कि मेरे उपयोगकर्ताओं को डाउनलोड करने की आवश्यकता हो। यदि मैं NAMESPACE फ़ाइल में importFrom(plotKML, readGPX) का उपयोग करता हूं तो यह plotKML को नामस्थान में लोड करेगा और उन सभी निर्भरताओं को डाउनलोड करेगा जो मैं नहीं चाहता हूं।आर पैकेज में आयात करें (आयात के बिना)

तो प्रश्न यह है: क्या मुझे आवश्यक एक समारोह के लिए कोड कॉपी करना उचित है (यह सुनिश्चित करना कि उस कार्य में सभी निर्भरताओं को शामिल किया गया हो)? यदि ऐसा है तो एट्रिब्यूशन/दस्तावेज़ीकरण के लिए क्या उचित है - क्या मैं दस्तावेज को मूल से कॉपी करता हूं?

this post में इस समस्या की एक बड़ी चर्चा है और ब्रायन डिग्स द्वारा उत्तर बहुत उपयोगी है। लेकिन वह "आपके उदाहरण के लिए समाप्त होता है, आप अपने पैकेज में memisc :: वर्णन के लिए कोड को कॉपी करने से बेहतर हो सकते हैं, हालांकि उस दृष्टिकोण की अपनी समस्याएं और चेतावनी हैं" इसलिए मुझे कुछ अनिश्चितता के साथ छोड़ दिया गया है कि समस्याएं क्या हैं और चाहे वह एक विशेषता परिप्रेक्ष्य से उपयुक्त है।

+0

क्या उस फ़ंक्शन के लिए कोड निर्भरता के बिना चलाता है? – Dason

+0

फ़ंक्शन XML पैकेज में कुछ फ़ंक्शंस पर निर्भर करता है जिसे मुझे आयात करने की आवश्यकता है, इसलिए कोई समस्या नहीं है। अन्यथा आयात में सूचीबद्ध किसी भी अन्य पैकेज से कार्यों की आवश्यकता नहीं है (लगभग 20 पैकेज आवश्यक हैं!) देखें [यहां] (http://cran.r-project.org/web/packages/plotKML/index.html) के लिए प्लॉटकेएमएल की सूची की आवश्यकता है। – ZRoss

+0

मुझे लगता है कि आपके अधिकांश उपयोगकर्ताओं ने कम से कम आधा पैकेज स्थापित किए होंगे, जिससे प्लॉटकेएमएल आयात करता है। – Roland

उत्तर

3

उचित विशेषता के बारे में प्रश्न सीधे पैकेज लेखक से संपर्क करके सबसे अच्छा हल किया जाएगा। जैसा ऊपर बताया गया है, उस पैकेज में जीपीएल -3 का उपयोग करना प्रतीत होता है, जिसका मतलब यह होना चाहिए कि आप अपने पैकेज में फ़ंक्शन शामिल कर सकते हैं लेकिन आपका पैकेज भी जीपीएल -3 लाइसेंस प्राप्त होना चाहिए। (हमेशा के रूप में, शायद यहां कोई भी वकील नहीं है, इसलिए यह जांचने के लिए है ...)

केवल आपके द्वारा आवश्यक फ़ंक्शन की प्रतिलिपि बनाने का प्राथमिक नकारात्मक पक्ष यह है कि आप इसे बनाए रखने के लिए जिम्मेदार हैं। इसका शायद यह भी इस तरह से बनाए रखना है कि इसे साजिश केएमएल से मूल संस्करण के साथ समन्वयित करता है। पैकेज, आसपास के कोड और कितनी बार इसे अद्यतन किया जाता है, यह काफी सरल हो सकता है या यह भयानक हो सकता है।

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