因子列を持つ空の data.table がある場合、因子列は:= NULL
演算子で削除できません。整数列と文字列には問題はありません。
library(data.table)
DT <- data.table(numbers = integer(0),
char.letters = character(0),
factor.letters = factor(character(0)))
DT[, factor.letters := NULL]
次のエラーが表示されます。
Error in `[.data.table`(DT, , `:=`(factor.letters, NULL)) :
Can't assign to column 'factor.letters' (type 'factor') a value of type 'NULL' (not character, factor, integer or numeric)
エラーが発生しないことに注意してくださいDT[, char.letters := NULL]
。DT[, numbers := NULL]
factor 列は文字列や整数列とは動作が異なるため、これは data.table に問題があると思われますが、何か間違っているのでしょうか?
編集: 前の例では join を使用して空の data.table を作成しましたが (これは と呼ばれていましたjoin
)、直接作成することで同じように簡単に再現できます。