पहला आर पैकेज सोर्स कोड खुद के पैकेज लिखने की तैयारी में अध्ययन करने के लिए


47

मैं आर पैकेज लिखना शुरू करने की योजना बना रहा हूं।

मैंने सोचा कि पैकेज निर्माण की परंपराओं को सीखने के लिए मौजूदा पैकेजों के स्रोत कोड का अध्ययन करना अच्छा होगा।

अध्ययन के लिए अच्छे पैकेज के लिए मेरा मानदंड:

  • सरल सांख्यिकीय / तकनीकी विचार : बिंदु पैकेज निर्माण के यांत्रिकी के बारे में सीखना है। पैकेज को समझना पैकेज के वास्तविक विषय के बारे में विस्तृत उच्च डोमेन विशिष्ट ज्ञान की आवश्यकता नहीं होनी चाहिए।
  • सरल और पारंपरिक कोडिंग शैली : मैं कुछ और अधिक Hello Worldनहीं बल्कि पूरी तरह से कुछ अधिक की तलाश में हूं । R पैकेज सीखने पर Idiosyncratic ट्रिक्स और हैक विचलित करने वाले होंगे।
  • अच्छी कोडिंग शैली : कोड अच्छी तरह से लिखा गया है। यह दोनों को अच्छे कोडिंग की समझ बताता है, सामान्य तौर पर, और आर में कोडिंग के सम्मेलनों के बारे में जागरूकता।

प्रशन:

  • कौन से पैकेजों का अध्ययन करना अच्छा होगा?
  • सुझाए गए पैकेज स्रोत कोड या तो उपरोक्त मानदंडों या किसी अन्य मापदंड के सापेक्ष अध्ययन करने के लिए अच्छा होगा जो प्रासंगिक हो सकता है?

अपडेट (13/12/2010) डिर्क की टिप्पणियों के बाद मैं यह स्पष्ट करना चाहता था कि कोई संदेह नहीं कि कई पैकेज पहले अध्ययन करना अच्छा होगा। मैं यह भी मानता हूं कि पैकेज अलग-अलग चीजों (जैसे, विगनेट्स, एस 3 क्लास, एस 4 क्लास, यूनिट टेस्टिंग, रॉक्सिजन, आदि) के लिए मॉडल प्रदान करेंगे। फिर भी, अच्छे पैकेजों के बारे में ठोस सुझाव पढ़ना दिलचस्प होगा और जिन कारणों से वे शुरू करने के लिए अच्छे पैकेज होंगे।

मैंने "पैकेज" के बजाय "पैकेज" को संदर्भित करने के लिए ऊपर दिए गए प्रश्न को भी अपडेट किया है।


2
इसे देखने का एक और तरीका विशेष पैकेज लेखकों की तलाश करना है ; कुछ लेखक सर्वोत्तम प्रथाओं का पालन करने और स्पष्ट कोड लिखने में बहुत अच्छे हैं, जिस स्थिति में आप उनकी सभी सामग्रियों का अध्ययन कर सकते हैं।
शनि

1
@ शने गुड पॉइंट। पैकेज लिखने के लिए सीखने पर कोई भी सुझाव जिस पर पैकेज लेखकों को अध्ययन करना अच्छा हो सकता है?
जेरोमे एंग्लीम

जवाबों:


15

मैं निम्नलिखित कारणों से चिड़ियाघर पैकेज को देखने का सुझाव दूंगा :

  1. इसमें कई अच्छी तरह से लिखित विगनेट हैं;
  2. यह का उपयोग कर एक नाम स्थान का उपयोग करता है useDynLib, import, export, और S3method;
  3. इसका उपयोग करके कई यूनिट परीक्षण हैं RUnit;
  4. यह S3 तरीकों को बनाने / दस्तावेज़ करने के अच्छे उदाहरण प्रदान करता है;
  5. यह .Callइंटरफ़ेस के माध्यम से सी कोड के लिए कुछ कॉल है ;
  6. इसमें एक (प्लॉटिंग) डेमो होता है;
  7. इसका उद्देश्य कोर आर इंस्टालेशन के अनुरूप होना है (जैसे फ़ंक्शंस समान रूप से व्यवहार करते हैं, यह बेस फ़ंक्शंस को मास्क / ओवरराइड नहीं करता है, आदि)

यह roxygen का उपयोग नहीं करता है, जो बहुत आसान है, लेकिन 8 में से 7 खराब नहीं है। ;-)

अपने मानदंडों का जवाब देने के लिए:

  1. अवधारणा सरल है: zooएक मैट्रिक्स जैसा वर्ग है जो किसी चीज का आदेश देता है । कोई डोमेन-विशिष्ट ज्ञान आवश्यक नहीं है।
  2. zoo लगता है कुछ idiosyncratic कोडिंग सम्मेलनों के लिए है, लेकिन कुछ भी नहीं है कि कोड को समझने से रोकता है।
  3. zoo संभव के रूप में आर के अनुरूप होने का लक्ष्य है।

1
यह पैकेज कहां मिल सकता है?
एडम एसए

@ एडम: मैंने अपने उत्तर में चिड़ियाघर के लिए एक लिंक जोड़ा। उस पेज में zoo के R-forge प्रोजेक्ट पेज का लिंक भी है।
जोशुआ उलरिक

9

मैं खुद को एक स्थापित आर पैकेज डेवलपर नहीं मानता लेकिन हाल ही में अपने काम के माहौल के लिए एक पैकेज लिखने और बनाए रखने की प्रक्रिया से गुजरा हूं।

मैं पहले से स्क्रिप्ट का एक सेट लिख रहा था / बनाए रख रहा था / अद्यतन कर रहा था जिसे मैं प्रोजेक्ट से प्रोजेक्ट में source()फ़ंक्शन के माध्यम से पास करूंगा । इसका अंतिम परिणाम यह हुआ कि मैं अपने नेटवर्क ड्राइव पर विभिन्न स्थानों पर लटकी ज्यादातर अनावश्यक स्क्रिप्ट के साथ समाप्त हो गया। यह कभी स्पष्ट नहीं था कि स्क्रिप्ट का सबसे अद्यतित सेट कहां स्थित था। मैं तब से लिख रहा हूँ / लिख रहा हूँ जब तक कि वह roxygen का उपयोग करने वाले पैकेज को बनाए नहीं रखे। इसने मेरे जीवन को बहुत सरल बना दिया है और अपने काम को सहकर्मियों के साथ साझा करना आसान बना दिया है।

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

हैडली के पैकेज भी कुछ काफी बुनियादी अवधारणाओं की सेवा करते हैं और तकनीकी पहलू के विचारों की ओर इशारा करते हैं, तो आप को हटाना आसान है। मैं अपने आप को plyr स्रोत कोड के माध्यम से खोदता हूँ जब मैं roxygen दस्तावेज़ीकरण या अन्य मूलभूत कार्यों पर एक सूचक की तलाश में हूं।


धन्यवाद। विशेष रूप से, भक्तगण विकी के पास बहुत सारे महान विचार हैं।
जेरोमे एंग्लीम

@Jeromy - प्रतिलिपि प्रस्तुत करने योग्य अनुसंधान आदि पर आपकी हालिया पोस्ट (uber uber मददगार है इसलिए धन्यवाद!) पढ़ने का मतलब है कि आप बहुत जल्दी roxygen ले जाएंगे। मुझे यह भी उल्लेख करना चाहिए कि एक्लिप्स, ऑक्सीजन सिंटैक्स का समर्थन करता है और इसे एक बहुत आसान संक्रमण बनाता है। सबसे कठिन काम जो मैं कर रहा हूं, वह विगनेट्स लिख रहा है जो उपयोगी और उत्पादक हैं। मुझे लगता है कि आप उस संबंध में मेरी तुलना में बहुत अधिक कूदने वाले बिंदु से शुरू कर रहे हैं।
चेस

2
बस ggplot2 स्रोत को न पढ़ें। यह आपके मस्तिष्क को ब्लीड कर देगा
हैडली

क्या एक ईमानदार आर डेवलपर!
215 बजे सिंह 5188

7

क्यों एक अनुभवजन्य संचालित यादृच्छिक नमूना दृष्टिकोण नहीं लेते हैं? बस कुछ चुनें और देखें कि आपके लिए कौन सा काम है।

एक तरफ किडिंग, बस कुछ संकुल को देखें जो आप स्वयं उपयोग करते हैं और परिचित हैं। उन्हें डाउनलोड करना आसान है, या यदि आप पसंद करते हैं, तो आप उन्हें आर-फोर्ज, RForge, या जीथब में वेब इंटरफ़ेस के माध्यम से भी देख सकते हैं।

आप विभिन्न विचारों के लिए अलग-अलग पैकेजों के साथ समाप्त होने की संभावना करेंगे। कुछ लोग आपकी मदद कर सकते हैं जिस तरह से वे एकीकृत करते हैं, कहते हैं, एक शब्दचित्र। कुछ संकलित कोड के साथ मदद कर सकते हैं। या इकाई परीक्षण। या रक्सिजन। उनमें से लगभग 2600 हैं, तो एक ही सर्वश्रेष्ठ पर जुनूनी क्यों?


शानदार अंक। मैं खुद को तलाशने की योजना बना रहा था। और हां, अन्वेषण आधा मजेदार है। और मैं सहमत हूं कि विभिन्न पैकेज अलग-अलग चीजें सिखाते हैं। मैं मानता हूं कि कई पैकेज अच्छे शुरुआती बिंदु होंगे। मैं इस सवाल को प्रतिबिंबित करने के लिए अपने प्रश्न को अपडेट करूंगा कि कई पैकेज मानदंड को पूरा करेंगे। लेकिन कुछ ठोस सुझाव होने से कुछ समय के लिए अपने आप को और दूसरों को आर पैकेजों के लिए नया बचा सकते हैं। मुझे यह भी लगता है कि आर पैकेज के स्थापित डेवलपर्स सीखने के उद्देश्यों के लिए दिए गए पैकेज के गुणों के बारे में टिप्पणी करने के लिए बेहतर स्थिति में हैं।
जेरोमी एंग्लिम

2
cuz आपको कहीं शुरू करने की आवश्यकता है :)
hans0l0

2

सलाह का एक और टुकड़ा उन पैकेजों को देखने के लिए हो सकता है जिन पर आप निर्भर होंगे या उनके साथ बातचीत करेंगे, खासकर अगर ये जोशुआ उलरिच द्वारा उल्लिखित कुछ वस्तुओं को लागू करते हैं या प्रसिद्ध लेखकों द्वारा लिखे गए हैं। यह सीखने में मददगार हो सकता है कि आपके क्षेत्र में चीजें कैसे की जाती हैं, कुछ संगतता सुनिश्चित करने के लिए। अक्सर लोगों ने कुछ मुद्दों के बारे में सोचा होगा और उनके समाधान को पढ़ना मददगार होगा।


1

मैं हैडले के पुनर्वसन पैकेज की सिफारिश करूंगा। आप https://github.com/hadley/reshape पर स्रोत पा सकते हैं


2
धन्यवाद। आप इसकी सिफारिश क्यों करते हैं?
जेरोमे एंग्लीम

4
मैं पुनर्वसन की सिफारिश नहीं करूंगा - यहां तक ​​कि मुझे समझ नहीं आता कि यह कैसे काम करता है। Reshape2 बहुत बेहतर है और कई और अच्छे विकास सिद्धांतों का पालन करता है।
हैडली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.