data.table
मेरा पुराना कोड काम क्यों नहीं कर रहा है?
खोज…
परिचय
अनूठे और डुप्लिकेट किए गए अब कीटेड डेटा पर काम नहीं करते हैं
यह data.table> = 1.9.8 पर जाने वालों के लिए है
आपके पास पालतू जानवरों के मालिकों और नामों का एक डेटा सेट है, लेकिन आपको संदेह है कि कुछ दोहराया डेटा पर कब्जा कर लिया गया है।
library(data.table)
DT <- data.table(pet = c("dog","dog","cat","dog"),
owner = c("Alice","Bob","Charlie","Alice"),
entry.date = c("31/12/2015","31/12/2015","14/2/2016","14/2/2016"),
key = "owner")
> tables()
NAME NROW NCOL MB COLS KEY
[1,] DT 4 3 1 pet,owner,entry.date owner
Total: 1MB
एक मेज की तरह यह याद करेंगे। ऐलिस दो बार दर्ज किया गया है।
> DT
pet owner entry.date
1: dog Alice 31/12/2015
2: dog Alice 14/2/2016
3: dog Bob 31/12/2015
4: cat Charlie 14/2/2016
मान लें कि आपने कुंजी के आधार पर अपने डेटा में डुप्लिकेट से छुटकारा पाने के लिए unique
का उपयोग किया, हाल ही के डेटा कैप्चर की तारीख का उपयोग करके TRUE से।
clean.DT <- unique(DT, fromLast = TRUE)
> tables()
NAME NROW NCOL MB COLS KEY
[1,] clean.DT 3 3 1 pet,owner,entry.date owner
[2,] DT 4 3 1 pet,owner,entry.date owner
Total: 2MB
ऐलिस डुप्लिकेट हटा दिया गया है।
clean.DT <- unique(DT, fromLast = TRUE)
> tables()
NAME NROW NCOL MB COLS KEY
[1,] clean.DT 4 3 1 pet,owner,entry.date owner
[2,] DT 4 3 1 pet,owner,entry.date owner
यह काम नहीं करता। अभी भी 4 पंक्तियाँ!
ठीक कर
उस by=
पैरामीटर का उपयोग करें जो अब आपकी कुंजी के लिए नहीं बल्कि सभी स्तंभों के लिए डिफ़ॉल्ट है ।
clean.DT <- unique(DT, by = key(DT), fromLast = TRUE)
अब सब ठीक है।
> clean.DT
pet owner entry.date
1: dog Alice 14/2/2016
2: dog Bob 31/12/2015
3: cat Charlie 14/2/2016
विवरण और स्टॉपगैप फिक्स
विवरण के लिए NEWS रिलीज़ नोट्स में आइटम 1 देखें:
V1.9.8 में परिवर्तन (CRAN 25 Nov 2016 को)
संभावित रूप से ब्रेकिंग चैनल
- डिफ़ॉल्ट रूप से सभी कॉलम अब
unique()
,duplicated()
औरuniqueN()
डेटा.टेबल मेथड्स, # 1284 और # 1841 द्वारा उपयोग किए जाते हैं। पुराने व्यवहार को पुनर्स्थापित करने के लिए:options(datatable.old.unique.by.key=TRUE)
। 1 वर्ष में पुराने डिफ़ॉल्ट को पुनर्स्थापित करने का यह विकल्प चेतावनी के साथ हटा दिया जाएगा। 2 साल में विकल्प हटा दिया जाएगा। कृपया स्पष्टता के लिए स्पष्ट रूपby=key(DT)
से गुजरें। केवल कोड जो डिफ़ॉल्ट पर निर्भर करता है, प्रभावित होता है। रिलीज से पहले 26. CRAN और Bioconductor पैकेज data.table का उपयोग करके जांचे गए। 9 को बदलने की आवश्यकता थी और उन्हें अधिसूचित किया गया था। परीक्षण कवरेज के बिना कोड की कोई भी रेखा इन जांचों से छूट गई होगी। CRAN या BioconSTR पर कोई भी पैकेज चेक नहीं किया गया।
इसलिए आप अपने कोड के ठीक होने तक अस्थायी वर्कअराउंड के रूप में विकल्पों का उपयोग कर सकते हैं।
options(datatable.old.unique.by.key=TRUE)