【问题标题】:Error deleting factor column in empty data.table删除空 data.table 中的因子列时出错
【发布时间】: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 &lt;- data.table(a = integer(0), b=factor(character(0))); DT[, b := NULL]
  • 您介意提交错误here吗?

标签: r data.table


【解决方案1】:

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

使用 :=NULL 删除一个(0 长度)因子列 数据表 现在有效,#4809。感谢弗兰克品特的报道。已添加测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多