आउटपुट format
को बदलने के लिए मैंने अपनी खुद की कक्षा numeric
पर संलग्न करने का प्रयास किया है। यह ठीक काम करता है, लेकिन जब मैं समूह by
समूह करता हूं तो कक्षा वापस संख्या में वापस आती है।डेटा.table समूह के बाद एसएसडी में वर्ग परिभाषा क्यों खो देता है?
उदाहरण: मेरी कक्षा के लिए एक नया प्रारूप समारोह को परिभाषित करें:
format.myclass <- function(x, ...){
paste("!!", x, "!!", sep = "")
}
तो एक छोटा सा data.table
बनाने के लिए और स्तंभों में से एक को बदलने MyClass के लिए:
> DT <- data.table(L = rep(letters[1:3],3), N = 1:9)
> setattr(DT$N, "class", "myclass")
> DT
L N
1: a !!1!!
2: b !!2!!
3: c !!3!!
4: a !!4!!
5: b !!5!!
6: c !!6!!
7: a !!7!!
8: b !!8!!
9: c !!9!!
अब से एक समूह प्रदर्शन करते हैं और एन कॉलम पूर्णांक में बदल जाता है:
> DT[, .SD, by = L]
L N
1: a 1
2: a 4
3: a 7
4: b 2
5: b 5
6: b 8
7: c 3
8: c 6
9: c 9
> DT[, sapply(.SD, class), by = L]
L V1
1: a integer
2: b integer
3: c integer
कोई विचार क्यों?
"गधे" के लिए +1 पर रिपोर्ट करने के लिए कोरोन के लिए धन्यवाद। और एक महान उत्तर – Corone
+1 भी। मैंने शपथ ली होगी 'एसडी' कॉलम विशेषताओं को बनाए रखा लेकिन स्पष्ट रूप से नहीं। क्या यह ठीक होगा, जब तक कि कोई नकारात्मक न हो? (मुझे पता है कि कोई प्रदर्शन नकारात्मक नहीं होगा, इसलिए मेरा मतलब अन्यथा है)। –
मुझे सच में नहीं पता कि यह डिफ़ॉल्ट व्यवहार क्यों नहीं है। या अलग-अलग उपनामों के तहत सीआरएएन पर "[डेट" की कितनी प्रतियां बैठे हैं। असली समाधान "तिथि" से उप-वर्ग होना होगा और उस सबसेट फ़ंक्शन को मुफ्त में प्राप्त करना होगा :) j/k – Spacedman