आर द्वारा डेटा फ्रेम पास करने से पास-दर-मूल्य अर्थशास्त्र है, जो आकस्मिक साइड इफेक्ट्स (एक अच्छी बात) को कम करता है। हालांकि, जब पुन: प्रयोज्यता/पठनीयता/रखरखाव के लिए कई कार्यों/विधियों में कोड व्यवस्थित किया जाता है और जब उस कोड को बड़े डेटा संरचनाओं में हेरफेर करने की आवश्यकता होती है, उदाहरण के लिए, बड़े डेटा फ्रेम, परिवर्तन/संचालन की श्रृंखला के माध्यम से पास-बाय-वैल्यू सेमेंटिक्स लीड डेटा के बहुत सारे प्रतिलिपि और बहुत ढेर थ्रैशिंग (एक बुरी चीज) के लिए। उदाहरण के लिए, फ़ंक्शन पैरामीटर के रूप में पारित होने वाले ढेर पर 50 एमबी लगने वाला एक डेटा फ्रेम कम से कम उसी समय कॉपी किया जाएगा जैसे कॉल कॉल गहराई और कॉल स्टैक के नीचे ढेर आकार एन * 50Mb। यदि फ़ंक्शन कॉल श्रृंखला में गहराई से एक परिवर्तित/संशोधित डेटा फ्रेम लौटाते हैं तो प्रतिलिपि अन्य एनआर: संदर्भ
SO प्रश्न What is the best way to avoid passing a data frame around? इस विषय को छूता है लेकिन इस तरह से वाक्यांशित किया जाता है जो सीधे पास-पास पूछने से बचाता है -प्रभावन प्रश्न और विजेता उत्तर मूल रूप से कहता है, "हां, पास-दर-मूल्य यह है कि आर कैसे काम करता है"। यह वास्तव में 100% सटीक नहीं है। आर वातावरण पास-दर-संदर्भ अर्थशास्त्र और ओओ ढांचे को सक्षम करते हैं जैसे proto इस क्षमता का व्यापक रूप से उपयोग करते हैं। उदाहरण के लिए, जब एक प्रोटो ऑब्जेक्ट फ़ंक्शन तर्क के रूप में पारित किया जाता है, जबकि इसका "जादू रैपर" मूल्य द्वारा पारित किया जाता है, आर डेवलपर को अर्थशास्त्र पास-दर-संदर्भ होते हैं।
ऐसा लगता है कि संदर्भ द्वारा एक बड़ा डेटा फ्रेम पास करना एक आम समस्या होगी और मैं सोच रहा हूं कि दूसरों ने इसका कैसे संपर्क किया है और क्या कोई पुस्तकालय है जो इसे सक्षम करता है। मेरी खोज में मैंने एक खोज नहीं की है।
यदि कुछ भी उपलब्ध नहीं है, तो मेरा दृष्टिकोण एक प्रोटो ऑब्जेक्ट बनाना होगा जो डेटा फ्रेम को लपेटता है। मैं सिंटैक्टिक चीनी के बारे में पॉइंटर्स की सराहना करता हूं जिसे इसे उपयोगी बनाने के लिए इस ऑब्जेक्ट में जोड़ा जाना चाहिए, उदाहरण के लिए, $ और [[ऑपरेटरों के साथ-साथ किसी भी गॉथस के लिए मुझे देखना चाहिए। मैं एक आर विशेषज्ञ नहीं हूँ।
बोनस एक प्रकार-अज्ञेय पास-बाय-रेफरेंस समाधान के लिए इंगित करता है जो आर के साथ अच्छी तरह से एकीकृत करता है, हालांकि मेरी ज़रूरतें विशेष रूप से डेटा फ्रेम के साथ होती हैं।
मुझे नहीं लगता कि आपके प्रश्न का आधार सही है। आर केवल परिवर्तन पर प्रतिलिपि बनाता है, ताकि जब तक आप ऑब्जेक्ट को नहीं बदलते, तब तक आप नए प्रतिलिपि किए बिना कॉल स्टैक के नीचे खुशी से गुजर सकते हैं।मैं आपको एक मिनट में इस बारे में कुछ संदर्भों का प्रयास करने और ढूंढने की कोशिश करूंगा। – Andrie
उदाहरण के लिए इस सवाल और इसके जवाब @matthewdowle द्वारा देखें: http://stackoverflow.com/q/10225098/602276 – Andrie
एंड्री सही है। आश्चर्यचकित है कि आपको ''data.table'] नहीं मिला है (http://datatable.r-forge.r-project.org/LondonR_2012.pdf) बड़ी' data.frame' के लिए आपकी खोजों में। आपने क्या खोजा –