मुझे लगता है कि आर की डेटा प्री-प्रोसेसिंग क्षमता - यानी, इसके स्रोत से डेटा निकालने और विश्लेषिकी चरणों से ठीक पहले सब कुछ - बेहतर हो गया है पिछले तीन वर्षों में काफी हद तक (समय की लंबाई मैं आर का उपयोग कर रहा हूं)। मैं रोज़ पाइथन का उपयोग करता हूं और पिछले सात सालों से इसके लिए है - इसकी टेक्स्ट प्रोसेसिंग क्षमताएं शानदार हैं - और फिर भी मैं आपके द्वारा उल्लेख किए गए कार्य के प्रकार के लिए आर का उपयोग करने के लिए एक पल के लिए संकोच नहीं करूंगा।
हालांकि कुछ प्रावधान।सबसे पहले, मैं अपने क्यू में कार्यों के सेट के लिए बाहरी संकुल की एक जोड़ी पर बहुत बारीकी से देख सुझाव देते हैं - विशेष रूप से, हैश (अजगर की तरह मुख्य मान डेटा संरचना), और stringr
stringr दोनों और हैशCRAN पर उपलब्ध हैं (ज्यादातर आधार पुस्तकालय में कम उपयोगकर्ता के अनुकूल स्ट्रिंग परिवर्तन कार्यों पर रैपर के होते हैं)।
> library(hash)
> dx = hash(k1=453, k2=67, k3=913)
> dx$k1
[1] 453
> dx = hash(keys=letters[1:5], values=1:5)
> dx
<hash> containing 5 key-value pair(s).
a : 1
b : 2
c : 3
d : 4
e : 5
> dx[a]
<hash> containing 1 key-value pair(s).
a : 1
> library(stringr)
> astring = 'onetwothree456seveneight'
> ptn = '[0-9]{3,}'
> a = str_extract_all(astring, ptn)
> a
[[1]]
[2] "456"
यह भी लगता है आर प्रयोक्ता जिनके लिए पाठ प्रसंस्करण और पाठ विश्लेषिकी अपने दिन के लिए दिन के काम का एक महत्वपूर्ण भाग शामिल की एक बड़ी सबसेट है कि वहाँ - के रूप में क्रैन के Natural Language Processing Task View (एक के बारे में 20 की इसका सबूत ऐसे अनौपचारिक डोमेन उन्मुख पैकेज संग्रह)। उस कार्य दृश्य में पैकेज tm है, जो टेक्स्ट खनन के लिए कार्यों के लिए समर्पित पैकेज है। शामिल टीएम में इस तरह अपने Q
इसके अलावा में वर्णित के रूप में अनुकूलित प्रोसेसिंग कार्यों के लिए कार्य कर रहे हैं, आर यथोचित बड़े डेटासेट पर सहभागी काम कर (जैसे,> 1 जीबी) के लिए संकुल की एक उत्कृष्ट चयन किया है अक्सर समानांतर प्रसंस्करण बुनियादी ढांचे को स्थापित करने की आवश्यकता के बिना (लेकिन यह उपलब्ध होने पर क्लस्टर का निश्चित रूप से शोषण कर सकता है)। मेरी राय में इनमें से सबसे प्रभावशाली है माइकल केन द्वारा माइकल केन और जॉन एमर्सन द्वारा रूब्रिक "The Bigmemory Project" (सीआरएएन) के तहत पैकेजों का सेट; यह परियोजना बड़े पैमाने पर, biganalytics, synchronicity, bigtabulate, और bigalgebra subsumes। संक्षेप में, इन पैकेजों के पीछे की तकनीकों में शामिल हैं: (i) साझा स्मृति में डेटा आवंटित करना, जो डेटा की एक प्रति में अलग समवर्ती प्रक्रियाओं द्वारा साझा पहुंच के समन्वय को सक्षम बनाता है; (ii) फ़ाइल-समर्थित डेटा संरचनाएं (जो मुझे विश्वास है, लेकिन मैं निश्चित नहीं हूं, स्मृति-मैप किए गए फ़ाइल संरचना का पर्याय बन गया है, और जो पॉइंटर्स का उपयोग करके डिस्क से बहुत तेजी से पहुंच को सक्षम बनाता है, इस प्रकार उपलब्ध फ़ाइल आकार पर रैम सीमा से परहेज करता है) ।
फिर भी, आर की मानक लाइब्रेरी में कुछ फ़ंक्शन और डेटा संरचनाएं आम रैम सीमाओं के निकट डेटा के साथ अंतःक्रियात्मक रूप से काम करना आसान बनाती हैं। उदाहरण के लिए, .RData, एक देशी द्विपदीय प्रारूप, के बारे में उपयोग करने के लिए संभव के रूप में सरल है (आज्ञा बचाने और लोड कर रहे हैं) और यह उत्कृष्ट संपीड़न है:
> library(ElemStatLearn)
> data(spam)
> format(object.size(spam), big.mark=',')
[1] "2,344,384" # a 2.34 MB data file
> save(spam, file='test.RData')
इस फ़ाइल में 'परीक्षण। RData 'केवल 176 KB है, से अधिक 10-गुना संपीड़न।
यह आपके प्रश्न का सीधा जवाब नहीं है, लेकिन क्या आप rpy2 जैसी चीज़ों से अवगत हैं? यह आपको पायथन वस्तुओं को आर objeccts में बदलने और उन पर आर कार्यों का उपयोग करने की अनुमति देता है। तो आप पाइथन प्रोसेसिंग कर सकते हैं, फिर आर एक ही स्क्रिप्ट में प्रोसेसिंग कर सकते हैं, यद्यपि थोड़ी देर के सिंटैक्स के साथ। –
@ थॉमस काफी समाधान नहीं है। मेरी चिंता यह है कि मैं आर पर चिपकना चाहता हूं और जितना संभव हो उतना कम बाहरी सामान का उपयोग करना चाहता हूं। विशेष रूप से जब मैं अपना कोड देता हूं, तो बेहतर होगा यदि अंतिम उपयोगकर्ता को केवल 'सेट' पैकेज में आर –
सेट इंस्टॉल करने की आवश्यकता हो। चूंकि वैक्टरों ने तत्वों का नाम दिया है, इसलिए वे अधिकांश उद्देश्यों के लिए समान रूप से व्यवहार करते हैं। (आईडी और मूल्य कॉलम के साथ एक डेटा.फ्रेम भी एक dict के रूप में काम करता है।) –