看起来是1.8.10版本后引入的一个与包含列表的DT的setkey相关的bug。 运行下面两个代码以查看问题:
library(data.table)
dtl <- list()
dtl[[1]] <- data.table(scenario = 1,
processing = c(function(x) x))
dtl[[2]] <- data.table(scenario = 2,
processing = c(function(x) x))
dt <- rbindlist(dtl)
setkeyv(dt, c("scenario"))
其次,目前存在错误:
dtl <- list()
dtl[[1]] <- data.table(scenario = 2, # <- note we change order
processing = c(function(x) x))
dtl[[2]] <- data.table(scenario = 1,
processing = c(function(x) x))
dt <- rbindlist(dtl)
setkeyv(dt, c("scenario")) #setkey cannot sort?
它在1.8.10版本中运行良好。我无法在我的DT上设置关键字,似乎与包含函数列表的DT有关。有什么简单的解决办法吗?我追踪错误消息到C代码,但不知道如何修复它。
R 3.0.2 + data.table 1.9.2 在 Windows 64位操作系统上运行。 谢谢
dt <- dt[order(scenario)];setkey(dt, scenario)
- GSeedt <- data.table(a=2:1,b= list(list(1),list(2))); setkeyv(dt,'a')
更简单地重现它。 - mnel