如果我有一个带有因子列的空数据表,则无法使用:= NULL
运算符删除因子列。整数和字符列没有问题。
require(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的问题,但我做错了吗?
编辑:上一个示例使用了连接来创建空的data.table(后来称为join
),但可以通过直接创建它来轻松复制。
答案 0 :(得分:1)
感谢报道。现已修复于v1.8.9
使用:= NULL删除(0长度)因子列 data.table 现在有效,#4809。感谢Frank Pinter的报道。测试补充。