data.table
पैकेज का उपयोग करते समय, मुझे कुछ अनिश्चितता है जब मुझे setkey()
की आवश्यकता होती है। उदाहरण के लिए, ऑपरेटर का उपयोग by
विकल्प के साथ करते समय, चीजें अभी भी बहुत तेज लगती हैं भले ही मैंने कोई कुंजी सेट नहीं की है। setkey()
आवश्यक होने पर कोई और स्पष्ट हो सकता है और जब यह नहीं है? और :=
को by
के साथ कॉल करने से पहले आवश्यक नहीं है तो data.table
पैकेज इतनी तेजी से कैसे है क्योंकि संभावित रूप से इसे मानक data.frame
आर में एक बाइनरी के बजाय अनुक्रमिक खोज करके करना है क्योंकि यह नहीं करता है पता है कि मेरा data.table
वास्तव में by
पर तर्क द्वारा क्रमबद्ध किया गया है।सेटकी और: = ऑपरेटर, डेटाटेबल, आर
धन्यवाद
शानदार, धन्यवाद! एफएक्यू के माध्यम से खोद रहा था और इसे याद किया होगा। – Alex
क्या 'ad hoc by' तेजी से है क्योंकि यह रेडिक्स सॉर्टिंग का भी उपयोग करता है? – colinfang
@colinfang उस प्रश्न का उत्तर देने में मुश्किल है क्योंकि इसमें कई सुविधाएं शामिल हैं। क्वेरी और डेटा के अनुसार कारण अलग-अलग हैं। विज्ञापन 'द्वारा' पूर्णांक कॉलम के लिए समूहों को खोजने के लिए रेडिक्स सॉर्टिंग का उपयोग करता है, इसलिए यह प्रकार पर निर्भर करता है और कितने कॉलम 'by'-ed' होते हैं। फिर एक बार यह समूह मिल गया है, एक कारण समूहीकरण तेजी से है क्योंकि स्मृति को एक बार ऊपर के सबसे बड़े समूह के लिए आवंटित किया जाता है जिसे फिर सभी समूहों के लिए पुन: उपयोग किया जाता है। और केवल 'जे' द्वारा आवश्यक कॉलम के लिए। एफएक्यू देखें 3.1। 'Verbose = TRUE' मोड आज़माएं क्योंकि यह बताता है कि समूहों को खोजने में कितना समय व्यतीत होता है (इंक रेडिक्स सॉर्ट) बनाम उन्हें बनाते हैं। –