首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在data.table中引用删除一行?

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

Stack Overflow用户
提问于 2012-05-29 04:41:08
回答 5查看 55K关注 0票数 162

我的问题是关于引用赋值与在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),则为as pointed out here。现在我找到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

在data.table?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10790204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档