numeric
出力を変更するために、自分のクラスをにアタッチしようとしましたformat
。これは正常に機能しますが、グループをby
作成すると、クラスは数値に戻ります。
例:クラスの新しいフォーマット関数を定義します。
format.myclass <- function(x, ...){
paste("!!", x, "!!", sep = "")
}
次に、小さくdata.table
して、列の1つを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!!
ここでgroupbyを実行すると、N列が整数に戻ります。
> 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
なぜですか?