【发布时间】:2013-08-06 20:14:05
【问题描述】:
如果我有一个带有因子列的空 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 的问题,但我做错了什么吗?
编辑:上一个示例使用连接创建空的 data.table(当时称为join),但可以通过直接创建它来轻松复制它。
【问题讨论】:
-
看起来像一个错误 - 您还注意到任何其他奇怪的属性吗?
-
join[, factor.letters := as.character(NULL)]似乎工作...... -
这是我遇到的唯一奇怪的属性。
-
+1 不错的收获。无需加入即可更轻松地重现该问题:
DT <- data.table(a = integer(0), b=factor(character(0))); DT[, b := NULL] -
您介意提交错误here吗?
标签: r data.table