/ / आर का उपयोग करते समय मैं "ओओपी कैसे सोच सकता हूं"? - आर

आर का उपयोग करते समय मैं "ओओपी कैसे सोच सकता हूं"? - आर

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

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

उत्तर:

उत्तर № 1 के लिए 7

मैं तर्क दूंगा कि आपको "वर्कफ़्लो के संदर्भ में आर के बारे में सोचने की कोशिश नहीं करना चाहिए। इस पृष्ठ पर कुछ उपयोगी वर्कफ़्लो सुझाव हैं:

सांख्यिकीय विश्लेषण और रिपोर्ट लेखन के लिए वर्कफ़्लो

एक और महत्वपूर्ण विचार लाइन-दर-लाइन विश्लेषण बनाम पुनरुत्पादन अनुसंधान है। यहां एक अच्छी चर्चा है:

एक आर वर्कफ़्लो में लेखन कार्य बनाम लाइन-बाय-लाइन व्याख्या


जवाब के लिए 5 № 2

ओओपी के दो पहलू डेटा और जेनरिक / विधियां हैं जो डेटा पर काम करते हैं।

डेटा (विशेष रूप से डेटा जो आउटपुट हैएक विश्लेषण के) अक्सर संरचित और अंतर से संबंधित डेटा फ्रेम या अन्य वस्तुओं के होते हैं, और एक समन्वयित फैशन में इन्हें प्रबंधित करना चाहते हैं। इसलिए जटिल डेटा व्यवस्थित करने के तरीके के रूप में कक्षाओं की ओओपी अवधारणा।

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

कई विश्लेषण परिचित काम प्रवाह का पालन करते हैं; यहां एक कक्षाओं और विधियों का एक उपयोगकर्ता है, और समन्वयित डेटा + परिचित जेनेरिक का लाभ प्राप्त करता है। "ओओपी" सोचने से आपको पता चल सकता है तरीकों वस्तु पर, methods(class="lm") इसकी संरचना के बजाए, और आपको अपने काम प्रवाह को ढूढ़ने में मदद कर सकता है ताकि वे स्थापित वर्गों और विधियों के अच्छी तरह से परिभाषित चैनलों का पालन कर सकें।

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

"ओओपी" से पहले "ओओपी" क्यों पूछना एक उपयोगी सवाल है।


जवाब के लिए 4 № 3

आप इन लिंक को जांचना चाह सकते हैं: पेहला, दूसरा.

और यदि आप आर में कुछ गंभीर ओओ कोड देखना चाहते हैं, तो मैन्युअल पेज पढ़ें ReferenceClasses (जिसे आर 5 ऑब्जेक्ट ओरिएंटेशन कहा जाता है), और एक नज़र डालें Rook पैकेज, क्योंकि यह भारी पर निर्भर करता है ReferenceClasses। Btw, Rook आर कोडिंग में आर 5 के उचित उपयोग का एक अच्छा उदाहरण है। के साथ पिछले अनुभव JAVA या C++ सहायक हो सकता है, क्योंकि आर 5 विधि प्रेषण एस 3 से अलग है। दरअसल, एस 3 ओओ बहुत आदिम है, क्योंकि actuall "class" को ऑब्जेक्ट विशेषता के रूप में सहेजा जाता है, ताकि आप इसे आसानी से बदल सकें।

S3: <method>.<class>(<object>)
R5: <object>$<method>

वैसे भी, यदि आप एक प्रतिलिपि ले सकते हैं, तो मैं अनुशंसा करता हूं: "संक्षेप में आर", अध्याय 10।


जवाब के लिए 3 № 4

मेरे पास आर का प्रभावी ढंग से उपयोग करने का सीमित ज्ञान है, लेकिन यहां एक लेख है जिसने मुझे ओओ तरीके से आर का उपयोग करने के लिए भी अनुमति दी है:

http://www.ibm.com/developerworks/linux/library/l-r3/index.html


उत्तर के लिए 1 № 5

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

अध्याय 9 का अंतिम अनुच्छेद।2 "न्यू क्लासेस के साथ प्रोग्रामिंग" (पेज 335) जॉन एम। चेम्बर्स "" डेटा विश्लेषण के लिए सॉफ्टवेयर "(2008) में कहा गया है: "एक नई कक्षा का उपयोग करने में शामिल प्रोग्रामिंग की मात्रा कक्षा को परिभाषित करने में शामिल होने से कहीं अधिक हो सकती है। आप प्रोग्रामिंग को यथासंभव प्रभावी बनाने के लिए अपने नए वर्ग के उपयोगकर्ताओं को दे सकते हैं (भले ही आप अपनी खुद की होने की उम्मीद कर रहे हों मुख्य उपयोगकर्ता)। तो तथ्य यह है कि इस अध्याय में प्रोग्रामिंग शैली और अध्याय 10 ["तरीके और जेनेरिक फ़ंक्शंस"] कुछ अलग है, यह एक संयोग नहीं है। हम यहां कुछ और गंभीर प्रोग्रामिंग कर रहे हैं। "

विधियों के पैकेज (एस 4) का अध्ययन करने पर विचार करें।


जवाब के लिए 0 № 6

यहां कुछ अन्य अच्छे उत्तरों से परे (उदा। संक्षेप में अध्याय में आर), आपको कोर बायोकॉन्डक्टर पैकेजों पर एक नज़र डालना चाहिए। बीओसीसी ने हमेशा एस 4 कक्षाओं का उपयोग करके मजबूत ओओपी डिजाइन पर ध्यान केंद्रित किया है।