एकल डेटा विश्लेषक के लिए आर और संस्करण नियंत्रण


155

कई डेटा विश्लेषकों का कहना है कि मैं संस्करण नियंत्रण का उपयोग करता हूं। उदाहरण के लिए:

हालाँकि, मैं मूल्यांकन कर रहा हूँ कि क्या git जैसे संस्करण नियंत्रण प्रणाली को अपनाना सार्थक होगा।

एक संक्षिप्त अवलोकन: मैं एक सामाजिक वैज्ञानिक हूं जो अनुसंधान प्रकाशनों के लिए डेटा का विश्लेषण करने के लिए R का उपयोग करता है। मैं वर्तमान में R पैकेज का उत्पादन नहीं करता हूं। किसी प्रोजेक्ट के लिए मेरे R कोड में आमतौर पर डेटा इनपुट, सफाई, हेरफेर, विश्लेषण और आउटपुट जनरेशन के लिए कोड की कुछ हज़ार लाइनें शामिल होती हैं। प्रकाशन आमतौर पर LaTeX का उपयोग करके लिखे जाते हैं।

संस्करण नियंत्रण के संबंध में कई लाभ हैं जिनके बारे में मैंने पढ़ा है, फिर भी वे एकल डेटा विश्लेषक के लिए कम प्रासंगिक हैं।

  • बैकअप: मेरे पास पहले से बैकअप सिस्टम है।
  • फोर्किंग और रिवाइंडिंग: मैंने ऐसा करने की आवश्यकता कभी महसूस नहीं की है, लेकिन मैं देख सकता हूं कि यह कैसे उपयोगी हो सकता है (उदाहरण के लिए, आप एक ही डेटासेट पर आधारित कई पत्रिका लेख तैयार कर रहे हैं; आप एक रिपोर्ट तैयार कर रहे हैं जो मासिक रूप से अपडेट की जाती है, आदि) )
  • सहयोग: अधिकांश समय मैं स्वयं डेटा का विश्लेषण कर रहा हूं, इस प्रकार, मुझे संस्करण नियंत्रण के सहयोग लाभ नहीं मिलेंगे।

संस्करण नियंत्रण को अपनाने के साथ कई संभावित लागतें भी शामिल हैं:

  • एक संस्करण नियंत्रण प्रणाली का मूल्यांकन करने और सीखने का समय
  • मेरी वर्तमान फ़ाइल प्रबंधन प्रणाली की जटिलता में संभावित वृद्धि

हालाँकि, मुझे अभी भी लग रहा है कि मुझे कुछ याद आ रहा है। संस्करण नियंत्रण पर सामान्य गाइड को डेटा विश्लेषकों की तुलना में कंप्यूटर वैज्ञानिकों की ओर अधिक संबोधित किया जाता है।

इस प्रकार, विशेष रूप से उपरोक्त सूचीबद्ध परिस्थितियों के समान डेटा विश्लेषकों के संबंध में:

  1. क्या संस्करण नियंत्रण प्रयास के लायक है?
  2. संस्करण नियंत्रण अपनाने के मुख्य पेशेवरों और विपक्ष क्या हैं?
  3. आर के साथ डेटा विश्लेषण के लिए संस्करण नियंत्रण (उदाहरण के लिए, उदाहरणों, वर्कफ़्लो विचारों, सॉफ्टवेयर, गाइडों के लिंक) के साथ शुरुआत करने के लिए एक अच्छी रणनीति क्या है?

2
क्या आपने इसे पढ़ा है: stackoverflow.com/questions/360887/…
Marek

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

आपके पहले प्रश्न का उत्तर "हाँ" है, ज़ाहिर है। लेकिन आप आमतौर पर किस तरह के डेटा को संभालते हैं। अधिकांश सीवीएस सिस्टम में बाइनरी डेटा स्टोर करने का कठिन समय होता है।
एडुआर्डो लियोनी

3
आप इसे भी देखना चाहते हैं: stackoverflow.com/questions/2286831/…
शेन

@Eduardo I सादे पाठ (जैसे, टैब सीमांकित, निश्चित चौड़ाई) और बाइनरी (डेटाबेस, एसपीएसएस, एक्सेल, आदि) फ़ाइलों के मिश्रण के साथ काम करता है। डेटा भिन्न होता है: विशिष्ट उदाहरण 100 पंक्तियाँ x 500 कॉलम 10,000 x 20 से 2,000,000 x 20 तक।
जेरियोमी एंग्लिम

जवाबों:


89

मुझे लगता है कि आपके प्रश्न का उत्तर एक शानदार हां है- इस तरह की प्रणाली को लागू करने की लागतों को दूर करने के लिए एक संस्करण नियंत्रण प्रणाली के साथ आपकी फ़ाइलों के प्रबंधन के लाभ।

मैं आपके द्वारा उठाए गए कुछ बिंदुओं पर विस्तार से जवाब देने की कोशिश करूंगा:

  • बैकअप: मेरे पास पहले से बैकअप सिस्टम है।

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

  • किस अंतराल पर आपका बैकअप सिस्टम स्नैपशॉट लेता है?
  • स्नैपशॉट बनाने में कितना समय लगता है?
  • क्या स्नैपशॉट लेते समय आपकी पूरी हार्ड ड्राइव को इमेज करना पड़ता है, या इसे आसानी से केवल दो फाइल का बैकअप लेने के लिए कहा जा सकता है, जो कि महत्वपूर्ण अपडेट प्राप्त करता है?
  • क्या आपका बैकअप सिस्टम आपको पिनपॉइंट सटीकता के साथ दिखा सकता है, जो आपके टेक्स्ट फ़ाइलों में एक बैकअप से दूसरे में बदल गया है?

और सबसे महत्वपूर्ण रूप से:

  • बैकअप में कितने स्थान हैं? क्या वे आपके कंप्यूटर के समान भौतिक स्थान पर हैं?
  • अपने बैकअप सिस्टम से किसी एकल फ़ाइल के दिए गए संस्करण को पुनर्स्थापित करना कितना आसान है?

उदाहरण के लिए, मेरे कंप्यूटर में एक और हार्ड ड्राइव के बैकअप के लिए एक मैक और टाइम मशीन का उपयोग करें। टाइम मशीन अजीब फ़ाइल को पुनर्प्राप्त करने या मेरे सिस्टम को पुनर्स्थापित करने के लिए महान है अगर चीजें गड़बड़ हो जाती हैं। हालाँकि, मेरे पास यह नहीं है कि मेरे महत्वपूर्ण कार्य के साथ क्या भरोसा किया जाए:

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

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

Git जैसी एक संस्करण नियंत्रण प्रणाली के साथ, मैं बिना किसी प्रयास के विशिष्ट फ़ाइलों का एक बैकअप आरंभ कर सकता हूं जो पाठ संपादक में सहेजने का अनुरोध करता है- और फ़ाइल को imaged और तुरंत संग्रहीत किया जाता है। इसके अलावा, Git को प्रत्येक कंप्यूटर पर वितरित किया जाता है जिस पर मैं काम करता हूं उसके पास रिपॉजिटरी की एक पूरी प्रति है।

यह मेरे काम को चार अलग-अलग कंप्यूटरों में प्रतिबिंबित करता है- भगवान के एक कार्य से कम कुछ भी मेरी फ़ाइलों और डेटा को नष्ट नहीं कर सकता है, जिस बिंदु पर मैं शायद बहुत ज्यादा परवाह नहीं करता।

  • फोर्किंग और रिवाइंडिंग: मैंने ऐसा करने की आवश्यकता कभी महसूस नहीं की है, लेकिन मैं देख सकता हूं कि यह कैसे उपयोगी हो सकता है (उदाहरण के लिए, आप एक ही डेटासेट पर आधारित कई पत्रिका लेख तैयार कर रहे हैं; आप एक रिपोर्ट तैयार कर रहे हैं जो मासिक रूप से अपडेट की जाती है, आदि) )

एक एकल कलाकार के रूप में, मैं इतना भी कांटा नहीं है। हालाँकि, मैंने जिस समय को रिवाइंड करने का विकल्प रखा है, उसने कई बार एक संस्करण नियंत्रण प्रणाली सीखने में अपने निवेश का एकल-भुगतान किया है। आप कहते हैं कि आपको ऐसा करने की आवश्यकता कभी महसूस नहीं हुई है - लेकिन क्या आपके मौजूदा बैकअप सिस्टम के तहत किसी भी फाइल को रिवाइंड करना वास्तव में दर्द रहित, व्यवहार्य विकल्प है?

कभी-कभी रिपोर्ट सिर्फ 45 मिनट, एक घंटे या दो दिन पहले बेहतर दिखती थी।

  • सहयोग: अधिकांश समय मैं स्वयं डेटा का विश्लेषण कर रहा हूं, इस प्रकार, मुझे संस्करण नियंत्रण के सहयोग लाभ नहीं मिलेंगे।

हां, लेकिन आप एक उपकरण सीखेंगे जो किसी परियोजना में दूसरों के साथ सहयोग करने पर समाप्त होने पर अपरिहार्य साबित हो सकता है।

  • एक संस्करण नियंत्रण प्रणाली का मूल्यांकन करने और सीखने का समय

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

एक लोकप्रिय प्रणाली उठाओ और इसके लिए जाओ!

  • मेरी वर्तमान फ़ाइल प्रबंधन प्रणाली की जटिलता में संभावित वृद्धि

क्या आपके पास एक फ़ोल्डर है, यह कहें Projectsकि आपकी डेटा विश्लेषण गतिविधियों से संबंधित सभी फ़ोल्डर्स और फाइलें शामिल हैं? यदि ऐसा है तो उस पर थप्पड़ संस्करण नियंत्रण बिल्कुल आपकी फ़ाइल प्रणाली की जटिलता को बढ़ाने वाला है 0। यदि आपकी परियोजनाएं आपके कंप्यूटर के बारे में बिखरी हुई हैं- तो आपको संस्करण नियंत्रण लागू करने से पहले उन्हें केंद्रीकृत करना चाहिए और इससे आपकी फ़ाइलों के प्रबंधन की जटिलता कम हो जाएगी- यही कारण है कि हमारे पास एक Documentsफ़ोल्डर है।

  1. क्या संस्करण नियंत्रण प्रयास के लायक है?

हाँ! यह आपको एक बहुत बड़ा बटन देता है और आपको अपने यूएसबी ड्राइव को खोने जैसी चीजों की चिंता किए बिना आसानी से मशीन से मशीन पर काम करने की अनुमति देता है।

2 संस्करण नियंत्रण को अपनाने के मुख्य पेशेवरों और विपक्ष क्या हैं?

एकमात्र चोर जिसके बारे में मैं सोच सकता हूं, वह फ़ाइल आकार में मामूली वृद्धि है- लेकिन आधुनिक संस्करण नियंत्रण प्रणाली संपीड़न और चयनात्मक बचत के साथ बिल्कुल आश्चर्यजनक चीजें कर सकती हैं, इसलिए यह एक बहुत महत्वपूर्ण बिंदु है।

3 आर के साथ डेटा विश्लेषण के लिए संस्करण नियंत्रण (उदाहरण के लिए, उदाहरणों, वर्कफ़्लो विचारों, सॉफ्टवेयर, गाइडों के लिंक) के साथ आरंभ करने के लिए एक अच्छी रणनीति क्या है?

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

एक संस्करण नियंत्रण प्रणाली सीखने के लिए, मैं Git और इसके लिए इस गाइड की अत्यधिक अनुशंसा करता हूं ।

इन वेबसाइटों में Git के साथ विशिष्ट कार्य करने से संबंधित कुछ अच्छी युक्तियां और ट्रिक्स भी हैं:


1
"मेरे वर्तमान फ़ाइल प्रबंधन प्रणाली पर जटिलता में संभावित वृद्धि" के उत्तर के लिए +1। संस्करण नियंत्रण संभावित रूप से जटिलता के स्तर को कम कर देगा यदि आपकी बैकअप प्रक्रिया में स्नैपशॉट बिंदुओं पर नियंत्रण का दानेदार स्तर देने के साथ-साथ संस्करण नियंत्रण में रखी गई वस्तुएं (आप कुछ विवरण भी देते हैं जो तारीख तक नहीं बल्कि सुविधा या परिवर्तन द्वारा पुनर्प्राप्त करने में बहुत सहायक है )।
क्रिस्टोफर हैकेट ने

23

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

  1. यदि आप अदालत में संभावित उपयोग के लिए विश्लेषण कर रहे हैं तो संस्करण नियंत्रण उचित नहीं हो सकता है। ऐसा नहीं लगता है कि यह आपके लिए लागू होता है, लेकिन इससे हमारे ग्राहकों को यह जानकर बहुत घबराहट होती होगी कि हमारे द्वारा बनाई गई प्रत्येक स्क्रिप्ट का हर संस्करण संभवतः खोज योग्य था। हमने कोड मॉड्यूल के लिए संस्करण नियंत्रण का उपयोग किया था, जो कई कार्यों में पुन: उपयोग किए गए थे, लेकिन उस कारण से सगाई-विशिष्ट कोड के लिए संस्करण नियंत्रण का उपयोग नहीं किया था।
  2. हमने पाया कि संस्करण नियंत्रण का सबसे बड़ा लाभ कोड के संचयित मॉड्यूल से आया है जो कई परियोजनाओं में फिर से उपयोग किए गए थे। उदाहरण के लिए, आपके पास कुछ जनगणना PUMS अर्क के प्रसंस्करण का एक विशेष पसंदीदा तरीका हो सकता है। इस कोड को एक निर्देशिका में व्यवस्थित करें और इसे अपने VCS में डालें। फिर आप इसे हर बार अपनी ज़रूरत के अनुसार नए प्रोजेक्ट में देख सकते हैं। यह निश्चित परियोजना के लिए कुछ कोड की विशिष्ट शाखाएं बनाने के लिए भी उपयोगी हो सकता है, यदि आप उस परियोजना के लिए एक विशेष आम डेटासेट की विशेष प्रसंस्करण कर रहे हैं। फिर, जब आप उस प्रोजेक्ट के साथ काम करते हैं, तो तय करें कि आपका विशेष कोड मुख्य शाखा में वापस विलय करने के लिए कितना है।
  3. संस्करण नियंत्रण में संसाधित डेटा न रखें। केवल कोड। हमारा लक्ष्य हमेशा स्क्रिप्ट का एक पूरा सेट होना था ताकि हम अपने सभी आंतरिक रूप से संसाधित डेटा को हटा सकें, एक बटन धक्का दे सकें, और खरोंच से पुनर्जीवित रिपोर्ट के लिए हर नंबर हो। यह सुनिश्चित करने का एकमात्र तरीका है कि आपके डेटा में रहस्यमय तरीके से रहने वाले पुराने कीड़े न हों।
  4. यह सुनिश्चित करने के लिए कि आपके परिणाम वास्तव में पूरी तरह से प्रतिलिपि प्रस्तुत करने योग्य हैं, बस अपने कोड को वीसीएस में रखना पर्याप्त नहीं है। यह ध्यान रखना महत्वपूर्ण है कि किसी विशेष वितरण योग्य बनाने के लिए कौन से मॉड्यूल के किस संस्करण का उपयोग किया गया था।
  5. सॉफ्टवेयर के रूप में, मैं तोड़फोड़ के साथ अच्छे भाग्य था। इसे स्थापित करना और प्रबंधित करना आसान है। मैं नए-नए वितरित वीसीएस की अपील को पहचानता हूं, जैसे कि गिट और मर्क्यूरियल, लेकिन मुझे यकीन नहीं है कि यदि आप खुद से काम कर रहे हैं तो कोई मजबूत फायदे नहीं हैं। दूसरी ओर, मैं उन्हें उपयोग करने के लिए किसी भी नकारात्मक का पता नहीं है, या तो - मैं सिर्फ एक विश्लेषण वातावरण में उनके साथ काम नहीं किया है।

18

संपूर्णता के लिए, मुझे लगा कि मैं संस्करण नियंत्रण को अपनाने पर एक अपडेट प्रदान करूंगा।

मैंने सोलो डेटा विश्लेषण परियोजनाओं के लिए संस्करण नियंत्रण को बहुत उपयोगी माना है।

मैंने git को अपने मुख्य संस्करण नियंत्रण उपकरण के रूप में अपनाया है। मैं पहली बार स्टेट के साथ ग्रहण के भीतर ईगिट का उपयोग करना शुरू करता हूं। अब मैं आम तौर पर केवल कमांड-लाइन इंटरफ़ेस का उपयोग करता हूं, हालांकि RStudio के साथ एकीकरण काफी अच्छा है।

मैंने डेटा विश्लेषण परियोजनाओं के परिप्रेक्ष्य से संस्करण नियंत्रण के साथ स्थापित होने के अपने अनुभव के बारे में ब्लॉग किया है ।

जैसा कि पोस्ट में कहा गया है, मैंने पाया है कि संस्करण नियंत्रण को अपनाने से कई माध्यमिक लाभ हुए हैं कि मैं डेटा विश्लेषण परियोजनाओं के बारे में कैसे सोचता हूँ जिसमें स्पष्ट करना शामिल है:

  • स्रोत और व्युत्पन्न फ़ाइलों के बीच का अंतर
  • निर्भरता की प्रकृति:
    • कोड के तत्वों के बीच निर्भरताएं
    • एक परियोजना के भीतर फ़ाइलों के बीच निर्भरता
    • और भंडार के लिए बाह्य फ़ाइलों और कार्यक्रमों के साथ निर्भरता
  • एक रिपॉजिटरी की प्रकृति और रिपॉजिटरी को कैसे विभाजित किया जाना चाहिए
  • परिवर्तन और परियोजना मील के पत्थर पर प्रतिबद्ध और दस्तावेजीकरण की प्रकृति

2
मैंने कमांड लाइन इंटरफ़ेस के साथ भी शुरुआत की (और यह जानना अच्छा है) लेकिन मैंने मुख्य रूप से अपने R / git जरूरतों के लिए RStudio का उपयोग करने के लिए स्विच किया है। यह ज्यादातर चीजें प्रदान करता है जो मैं चाहता हूं लेकिन कभी-कभी मुझे कुछ चीजें करने के लिए एक टर्मिनल खोलने की आवश्यकता होती है जो सीधे इंटरफ़ेस में निर्मित नहीं होती हैं।
दासोन

17

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

हां, दूसरों के साथ काम करते समय संस्करण नियंत्रण के अतिरिक्त लाभ हैं, लेकिन एकल परियोजनाओं पर भी यह बहुत मायने रखता है।


9

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


7

मैं अब भी आप जैसे एकल अधिनियम के लिए संस्करण नियंत्रण की सिफारिश करूंगा क्योंकि गलतियों को पकड़ने के लिए एक सुरक्षा जाल होना बहुत बड़ी बात हो सकती है।

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

अगर आपके लिए ऐसा है, तो मैं स्रोत नियंत्रण का उपयोग करने की सलाह दूंगा। यह सीखना कठिन नहीं है।


7

आपको एक संस्करण नियंत्रण सॉफ़्टवेयर का उपयोग करना होगा, अन्यथा आपका विश्लेषण पूरी तरह से प्रतिलिपि प्रस्तुत करने योग्य नहीं होगा।

यदि आप अपने परिणाम कहीं प्रकाशित करना चाहते हैं, तो आपको हमेशा अपनी स्क्रिप्ट की स्थिति को फिर से बनाने में सक्षम होना चाहिए, जिस समय आपने उन्हें बनाया है। मान लें कि समीक्षक आपकी किसी स्क्रिप्ट में त्रुटि का पता लगाता है: आपको कैसे पता चलेगा कि कौन से परिणाम प्रभावित हैं और कौन से नहीं?

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


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

यह आपके डेटा पर संपूर्ण विश्लेषण को फिर से लागू करने में आपकी मदद करता है, लेकिन यह आपको यह नहीं बताता है कि आपके कौन से पूर्व परिणाम त्रुटि से प्रभावित थे।
dalloliogm

6

क्या संस्करण नियंत्रण प्रयास के लायक है?

एक बड़ा हाँ।

संस्करण नियंत्रण अपनाने के मुख्य पेशेवरों और विपक्ष क्या हैं?

पेशेवरों: आप ट्रैक कर सकते हैं कि आपने पहले क्या किया है। लेटेक्स के लिए विशेष रूप से उपयोगी है, क्योंकि आपको एक पुराने पैराग्राफ की आवश्यकता हो सकती है जिसे आपके द्वारा हटा दिया गया था! जब आप कंप्यूटर क्रैश करते हैं या आप एक नए पर काम करते हैं, तो आपके पास अपना डेटा फ़्लाई पर वापस आ जाता है।

विपक्ष: आपको कुछ सेटिंग्स करने की आवश्यकता है।

आर के साथ डेटा विश्लेषण के लिए संस्करण नियंत्रण (उदाहरण के लिए, उदाहरणों, वर्कफ़्लो विचारों, सॉफ्टवेयर, गाइडों के लिंक) के साथ शुरुआत करने के लिए एक अच्छी रणनीति क्या है?

बस इसे इस्तेमाल करना शुरू करें। मैं एक क्लाइंट टूल के रूप में विंडोज़ पर कछुआ SVN का उपयोग करता हूं और मेरे विभाग में एक svn सर्वर है, मैंने अपना सारा कोड और डेटा डाल दिया है (हां, आपने अपना डेटा वहां भी डाल दिया है!)।


6

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

यदि आपको पैकेज बनाने के लिए अनुशासन नहीं मिला है, तो मुझे यकीन नहीं है कि आपको उचित संशोधन नियंत्रण करने के लिए अनुशासन मिला है।


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

5

मैं ऊपर की भावनाओं से सहमत हूं और कहूंगा कि, हां, संस्करण नियंत्रण उपयोगी है।

लाभ;

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

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


मैं आर के लिए स्टेटेट और एक्लिप्स का उपयोग करता हूं; तो शायद मैं पहले कोशिश करूँगा।
जेरोमी एंग्लिम

4

एकल विकास के लिए एक नियंत्रण (किसी भी प्रकार का) वास्तव में दिलचस्प है:

  • इतिहास की खोज करना और पिछले कामों के साथ वर्तमान काम की तुलना करना
  • एक ही सेट की फ़ाइलों के लिए अलग-अलग संस्करण बनाना और आज़माना

यदि आप अपने आप को उन दो बुनियादी संस्करण नियंत्रण सुविधाओं में से एक करते हुए नहीं देखते हैं, तो एक साधारण बैकअप टूल आपको सभी की आवश्यकता हो सकती है।
यदि आपको उन सुविधाओं की आवश्यकता है, तो आपको बैकअप भी मिलेगा ( git bundleउदाहरण के लिए)


4

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


4

ड्रॉपबॉक्स में एक "पॉपर मैन" संस्करण नियंत्रण है जो आपको बहुत सारे अतिरिक्त लाभों के साथ थोड़े प्रयास के लिए वहां का हिस्सा मिलता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.