我的问题与 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, ]
但是通常我们可能想要避免这种情况,因为我们正在复制对象(这需要大约3 * N 内存,如果 N object.size(DT)
,正如这里指出的。
现在我找到了 set(DT, i, j, value)
。我知道如何设置特定的值(如下所示: 将第1行和第2列中的所有值以及第2列和第3列中的值设置为零)
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)
将整个 DT 设置为 NULL。
我的 SQL 知识是非常有限的,所以你们告诉我: 既然 data.table 使用 SQL 技术,是否有一个相当于 SQL 命令
DELETE FROM table_name
WHERE some_column=some_value
数据表?