13

因子列を持つ空の 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)、直接作成することで同じように簡単に再現できます。

4

1 に答える 1