7

是否可以在 data.table 中创建新列并同时更新现有列?以下没有奏效。谢谢。

library(data.table)
dt <- data.table(x=runif(4), y=runif(4), z=c("x","x","y","y"))
dt[, c("x", "y") := list(x[1], y[1]), by=z]     # works
dt[, c("x", "newx") := list(x[1], y[1]), by=z]

捕获段错误:

address 0x20000010, cause 'memory not mapped'

追溯:

 1: [.data.table(dt, , :=(c("x", "newx"), list(x[1], y[1])), by = z)
 2: dt[, :=(c("x", "newx"), list(x[1], y[1])), by = z]
4

1 回答 1

5

是的。但是您需要 R-Forge 的 v1.8.9 才能获得以下修复:

o 将添加和更新混合到一个 DT[, :=(existingCol=...,newCol=...), by=...] 现在可以正常工作,不会出现错误或段错误,#2778 和 #2528。非常感谢 Arunkumar Srinivasan 的报告和可重复的示例。添加了测试。

有关 v1.8.9 中的其他更改,请参阅最新新闻(实时更新)。

于 2013-08-29T22:51:23.820 回答