如何在data.table中通过引用删除一行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

data.table...。我知道是否可以引用删除行,类似于

DT[ , someCol := NULL]
DT[someRow := NULL, ]

最喜欢的例子(data.table)

DT = data.table(x = rep(c("a", "b", "c"), each = 3), y = c(1, 3, 6), v = 1:9)
#      x y v
# [1,] a 1 1
# [2,] a 3 2
# [3,] a 6 3
# [4,] b 1 4
# [5,] b 3 5
# [6,] b 6 6
# [7,] c 1 7
# [8,] c 3 8
# [9,] c 6 9

假设我想从这个data.table中删除第一行

DT <- DT[-1, ]
set(DT, 1:2, 2:3, 0) 
DT
#      x y v
# [1,] a 0 0
# [2,] a 0 0
# [3,] a 6 3
# [4,] b 1 4
# [5,] b 3 5
# [6,] b 6 6
# [7,] c 1 7
# [8,] c 3 8
# [9,] c 6 9

但是我怎么能擦除前两排呢?

set(DT, 1:2, 1:3, NULL)
DELET FROM table_name
WHERE some_column=some_value
提问于
用户回答回答于

如下所示:

DT = data.table(col1 = 1:1e6)
cols = paste0('col', 2:100)
for (col in cols){ DT[, (col) := 1:1e6] }
keep.idxs = sample(1e6, 9e5, FALSE) # keep 90% of entries
DT.subset = data.table(col1 = DT[['col1']][keep.idxs]) # this is the subsetted table
for (col in cols){
  DT.subset[, (col) := DT[[col]][keep.idxs]]
  DT[, (col) := NULL] #delete
}
用户回答回答于

data.table不能通过引用删除行。

data.table如您所知,可以通过引用添加和删​​除,因为它会过度分配列指针的向量。该计划是做一些类似的行,并允许快速insertdelete。删除行将memmove在C中使用,以删除行后的项目(在每一列中)。

扫码关注云+社区