केवल 4GB RAM (विंडोज 10 चलाने के साथ, इसलिए कि लगभग 2 या अधिक वास्तविक 1GB) के साथ मुझे आवंटन के साथ वास्तविक सावधान रहना होगा।
मैं लगभग विशेष रूप से data.table का उपयोग करता हूं।
'फ़्रेड' फ़ंक्शन आपको आयात पर फ़ील्ड नामों से जानकारी को कम करने की अनुमति देता है; केवल उन क्षेत्रों को आयात करें जिनके साथ वास्तव में शुरू करने की आवश्यकता होती है। यदि आप बेस आर रीड का उपयोग कर रहे हैं, तो आयात के तुरंत बाद स्पूसियस कॉलम को बंद कर दें।
42- के रूप में पता चलता है, जहां कभी भी संभव है मैं जानकारी आयात करने के तुरंत बाद स्तंभों के भीतर निर्वाह करूंगा।
मैं अक्सर rm () वातावरण से वस्तुओं को जैसे ही वे अब जरूरत नहीं है, जैसे अगली पंक्ति पर उन्हें कुछ और सबसेट करने के लिए उपयोग करने के बाद, और gc () कहते हैं।
data.table से 'fread' और 'fwrite' को आधार R रीड और राइट के साथ तुलना करके बहुत तेज किया जा सकता है ।
जैसा कि kpierce8 सुझाव देता है, मैं लगभग हमेशा पर्यावरण से बाहर सब कुछ फिर से लिखता हूं और इसे वापस लाता हूं, यहां तक कि हजार / सैकड़ों हजारों छोटी फाइलों के माध्यम से भी। यह न केवल पर्यावरण को 'साफ' रखता है और स्मृति आवंटन को कम रखता है, बल्कि संभवतः रैम की गंभीर कमी के कारण, आर मेरे कंप्यूटर पर अक्सर दुर्घटनाग्रस्त होने की प्रवृत्ति है; वास्तव में अक्सर। कोड के विभिन्न चरणों के माध्यम से आगे बढ़ने के साथ ही ड्राइव पर जानकारी का बैकअप होने का मतलब है कि क्रैश होने पर मुझे शुरुआत से ही सही शुरुआत नहीं करनी है।
2017 के अनुसार, मुझे लगता है कि सबसे तेज एसएसडी एम 2 पोर्ट के माध्यम से प्रति सेकंड कुछ जीबी के आसपास चल रहे हैं। मेरे पास वास्तव में बुनियादी 50GB किंग्स्टन V300 (550MB / s) SSD है जिसे मैं अपनी प्राथमिक डिस्क के रूप में उपयोग करता हूं (इस पर विंडोज और आर है)। मैं सभी थोक सूचनाओं को एक सस्ते 500GB WD प्लैटर पर रखता हूँ। जब मैं उन पर काम करना शुरू करता हूं, तो मैं डेटा सेट को एसएसडी में स्थानांतरित कर देता हूं। यह, 'फैडरिंग' और 'राइटराइटिंग' के साथ संयुक्त रूप से सब कुछ बढ़िया काम कर रहा है। मैंने 'ff' का उपयोग करने की कोशिश की है, लेकिन पूर्व को प्राथमिकता दें। 4K पढ़ने / लिखने की गति हालांकि इसके साथ समस्याएं पैदा कर सकती हैं; SSD से प्लैटर तक एक मिलियन 1k फ़ाइलों (250MBs लायक) के एक चौथाई का बैकअप लेने में घंटों लग सकते हैं। जहां तक मुझे जानकारी है, अभी तक कोई आर पैकेज उपलब्ध नहीं है जो स्वचालित रूप से 'chunkification' प्रक्रिया को अनुकूलित कर सके; उदाहरण के लिए देखें कि उपयोगकर्ता के पास कितनी रैम है, रैम की रीड / राइट स्पीड / कनेक्टेड सभी ड्राइव्स का परीक्षण करें और फिर एक इष्टतम 'chunkification' प्रोटोकॉल का सुझाव दें। यह कुछ महत्वपूर्ण वर्कफ़्लो सुधार / संसाधन अनुकूलन का उत्पादन कर सकता है; उदाहरण के लिए इसे विभाजित करें ... MB के लिए RAM -> इसे विभाजित करें ... SSD के लिए MB -> इसे विभाजित करें ... थाली पर MB -> इसे विभाजित करें ... टेप पर MB। यह पहले से काम करने के लिए इसे और अधिक यथार्थवादी गेज स्टिक देने के लिए डेटा सेट का नमूना ले सकता है।
जिन समस्याओं पर मैंने काम किया है उनमें आर और संयोजन और क्रमपरिवर्तन जोड़े, ट्राइएबल्स आदि शामिल हैं, जो केवल सीमित रैम को अधिक सीमित बनाता है क्योंकि वे किसी बिंदु पर कम से कम तेजी से विस्तार करेंगे । इसने मुझे गुणवत्ता पर बहुत अधिक ध्यान केंद्रित किया है, क्योंकि इसके बाद शुरू होने वाली जानकारी की मात्रा के विपरीत , इसे बाद में साफ करने की कोशिश करने के बजाय, और शुरू करने के लिए जानकारी तैयार करने में संचालन के अनुक्रम पर। सरल ऑपरेशन और जटिलता में वृद्धि); जैसे सब्मिट, फिर मर्ज / ज्वाइन, फिर कॉम्बिनेशन / पर्मुटेशन आदि।
कुछ उदाहरणों में पढ़ने और लिखने के आधार आर का उपयोग करने के कुछ लाभ प्रतीत होते हैं। उदाहरण के लिए, 'फ़्रेड' के भीतर त्रुटि का पता लगाना इतना अच्छा है कि इसे साफ करने के लिए आर में वास्तव में गड़बड़ जानकारी प्राप्त करने की कोशिश करना मुश्किल हो सकता है। यदि आप लिनक्स का उपयोग कर रहे हैं तो बेस आर भी काफी आसान लगता है। बेस आर लिनक्स में ठीक काम करने लगता है, विंडोज 10 ~ 20 जीबी डिस्क स्पेस का उपयोग करता है जबकि उबंटू को केवल कुछ जीबी की आवश्यकता होती है, उबंटू के साथ आवश्यक रैम थोड़ा कम है। लेकिन (एल) उबंटू में तीसरे पक्ष के पैकेज स्थापित करते समय मैंने बड़ी मात्रा में चेतावनी और त्रुटियों को देखा है। मैं (L) उबंटू या लिनक्स के साथ अन्य स्टॉक वितरण से बहुत दूर बहने की सलाह नहीं दूंगा क्योंकि आप समग्र रूप से बहुत अधिक अनुकूलता को ढीला कर सकते हैं, यह प्रक्रिया को लगभग व्यर्थ कर देता है (मुझे लगता है कि 'एकता' उबंटू को 2017 के रूप में रद्द कर दिया गया है। )।
उम्मीद है कि इनमें से कुछ दूसरों की मदद कर सकते हैं।