【发布时间】:2018-07-27 19:00:15
【问题描述】:
如果我有data.table:
d <- data.table("ID" = c(1, 2, 2, 4, 6, 6),
"TYPE" = c(1, 1, 2, 2, 3, 3),
"CLASS" = c(1, 2, 3, 4, 5, 6))
我知道我可以像这样删除大于特定值的值:
r <- d[!(d$TYPE > 2), ]
但是,如果我想将其应用于整个表中的 所有 列,而不仅仅是 TYPE(基本上删除整个表中值 > 2 的任何行),我将如何概括上述语句(如果可能,避免使用for 循环)。
我知道我可以通过 d > 2 生成一个布尔索引表,但如果我将它放入上面的代码行中,它会给我一个错误:
d[!d>2, ]
导致invalid matrix type
注意
有人提出这个问题类似于Return an entire row if the value in any specific set of columns meets a certain criteria。
但是,他们使用的是data.frame,而我使用的是data.table,符号不同。因此不是重复的问题。
【问题讨论】:
-
@Ryan 他们正在使用
data.frame,而我正在使用data.table,符号不同。因此不是重复的问题。 -
您想在支票中包含
ID列还是应该豁免?
标签: r data.table