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]产生错误。

由于因子列的行为与字符和整数列不同,我怀疑这是 data.table 的问题,但我做错了什么吗?

编辑:上一个示例使用 join 创建空的 data.table(然后称为join),但可以通过直接创建它来轻松复制它。

4

1 回答 1

3

感谢您的报告。现在在 v1.8.9 中修复

现在可以在空的 data.table 上使用 :=NULL 删除(0 长度)因子列,#4809。感谢弗兰克品特的报道。添加了测试。

于 2013-08-19T22:41:07.883 回答