2010-07-08 8 views
27

मेरे पास कई कस्टम फ़ंक्शंस हैं जिनका उपयोग मैं अक्सर आर में करता हूं। प्रत्येक स्क्रिप्ट में इस फ़ाइल (या इसके हिस्सों) को सॉस के बजाय, इसे बेस आर फ़ाइल में जोड़ने का कोई तरीका है, जैसे कि जब मैं आर का उपयोग करता हूं तो वे हमेशा उपलब्ध होते हैं ?आर में मैं अपने कस्टम कार्यों को स्थायी रूप से स्टोर करता हूं?

उत्तर

22

हां, एक पैकेज बनाएं। R की आपकी प्रतिलिपि के साथ आए कई ट्यूटोरियल के साथ-साथ Writing R Extensions मैनुअल भी हैं।

यह पहले बहुत अधिक काम जैसा प्रतीत हो सकता है, लेकिन आप शायद खुश होंगे कि आपने इसे लंबे समय तक किया था।

पीएस और फिर आप उस पैकेज को ~/.Rprofile से लोड कर सकते हैं। वास्तव में संक्षिप्त कोड के लिए, आप इसे वहां भी परिभाषित कर सकते हैं।

+5

एक पैकेज निश्चित रूप से सही उत्तर है। – Shane

+3

बस मेरा पहला पैकेज संकलित किया। यह नहीं पता था कि यह कितना आसान था। धन्यवाद Dirk! – Maiasaura

+1

बधाई - अच्छी तरह से किया गया! –

9

एक और विकल्प .Rprofile फ़ाइल का उपयोग करना है। आप ?Startup में विवरण के बारे में पढ़ सकते हैं।

... '.Rprofile' नामक एक फ़ाइल वर्तमान निर्देशिका या उपयोगकर्ता के घर निर्देशिका में में के लिए खोज की है (इसी क्रम में): मूल रूप से, यह विचार है कि है। उपयोगकर्ता प्रोफ़ाइल फ़ाइल कार्यक्षेत्र में सोर्स की गई है।

आप इस कार्यक्षमता का उपयोग करने के बारे में here पढ़ सकते हैं।

17

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

1

आप 'mvbutils' पैकेज को भी देख सकते हैं: यह आपको "कार्यों" (वर्कस्पेस के साथ फ़ोल्डरों "में)। डेटा में" रैडर्स "फाइलों को स्थापित करने देता है ताकि आप हमेशा देख सकें कि पैतृक कार्यों में क्या है (यानी पूर्वजों खोज() पथ में हैं)। तो आप अपने कस्टम फ़ंक्शंस को "प्रारंभिक कार्य" में डाल सकते हैं जहां आप हमेशा आर शुरू करते हैं; और उसके बाद आप जो भी परियोजना-विशिष्ट कार्य की आवश्यकता होती है, उसमें बदल जाते हैं, ताकि आप अव्यवस्थित कार्यक्षेत्रों से बच सकें, लेकिन आप अभी भी अपने कस्टम फ़ंक्शंस का उपयोग (और संपादित) कर सकेंगे क्योंकि प्रारंभिक कार्य हमेशा पूर्वज होता है। ऑब्जेक्ट्स (फ़ंक्शन समेत) ".RData" फ़ाइलों में संग्रहीत हो जाते हैं और इस प्रकार स्वचालित रूप से लोड/सहेजे जाते हैं, लेकिन फ़ंक्शंस के लिए अलग-अलग टेक्स्ट-बैकअप सुविधाएं होती हैं।

आर में काम करने के कई अलग-अलग तरीके हैं, और कोई भी "एक-आकार-फिट-सब" सर्वश्रेष्ठ समाधान नहीं है। एक सिंहावलोकन ढूंढना भी आसान नहीं है! सिर्फ अपने लिए बोलते हुए:

  • मैं हर समय 'स्रोत' रखने का प्रशंसक नहीं हूं; एक बात के लिए, यह बस बड़े डेटा सेट और/या मॉडल रन के परिणाम के साथ काम नहीं करता है।

  • मुझे लगता है कि पैकेज हार्ड बनाने और बनाए रखने के लिए हैं; वास्तव में एक महत्वपूर्ण उपरि है। पहले 5 संकुल आप लिखते हैं के बाद, यह थोड़ा आसान प्रदान की आप उस पर कर कम से कम एक साप्ताहिक आधार ताकि आप भूल नहीं है कैसे प्राप्त करता है, लेकिन वास्तव में ...

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

2

स्वीकार्य उत्तर सबसे अच्छा दीर्घकालिक है: पैकेज बनाएं।

सौभाग्य से, ऐसा करने के लिए सीखने की अवस्था devtools पैकेज द्वारा नाटकीय रूप से कम हो गई है: यह पैकेज निर्माण (सही पैर पर उतरने में एक अच्छी सहायता) को स्वचालित करता है, अच्छे प्रथाओं को प्रोत्साहित करता है (जैसे roxygen2 के साथ दस्तावेज़िंग, और साथ में सहायता करता है ऑनलाइन संस्करण नियंत्रण (bitbucket, GitHub या अन्य) का उपयोग कर, दूसरों के साथ अपने पैकेज को बांटने। यह भी क्रैन प्रस्तुत करने के लिए अपना रास्ता चौरसाई के लिए बहुत उपयोगी है।

http://adv-r.had.co.nz और http://r-pkgs.had.co.nz पर अच्छा डॉक्स।

create your package को

, उदाहरण के लिए आप कर सकते हैं:

install.packages("devtools") 
devtools::create("path/to/package/pkgname") 
संबंधित मुद्दे

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