R 从data.table中删除满足条件的行

R 从data.table中删除满足条件的行,r,data.table,R,Data.table,我有一个数据表 DT <- data.table(col1=c("a", "b", "c", "c", "a"), col2=c("b", "a", "c", "a", "b"), condition=c(TRUE, FALSE, FALSE, TRUE, FALSE)) col1 col2 condition 1: a b TRUE 2: b a FALSE 3: c c FALSE 4: c a

我有一个数据表

DT <- data.table(col1=c("a", "b", "c", "c", "a"), col2=c("b", "a", "c", "a", "b"), condition=c(TRUE, FALSE, FALSE, TRUE, FALSE))

   col1 col2 condition
1:    a    b      TRUE
2:    b    a     FALSE
3:    c    c     FALSE
4:    c    a      TRUE
5:    a    b     FALSE

这是可行的,但对于大型数据集来说速度非常慢,我想data.table中肯定有其他方法可以在没有循环或应用的情况下实现这一点。有什么建议我可以改进这一点吗(我是data.table的新手)?

您可以执行反连接:

mDT = DT[(condition), !"condition"][, rbind(.SD, rev(.SD), use.names = FALSE)]
DT[!mDT, on=names(mDT)]

#    col1 col2 condition
# 1:    c    c     FALSE

您可以执行反连接操作:

mDT = DT[(condition), !"condition"][, rbind(.SD, rev(.SD), use.names = FALSE)]
DT[!mDT, on=names(mDT)]

#    col1 col2 condition
# 1:    c    c     FALSE

对我来说,
mDT=DT[(条件),!“条件”]
不起作用,但是对于
DT[(条件),(col1,col2)]
@user1981275哦,这是一个版本控制问题。在data.table的最新版本中,此语法有效。对于旧版本,您需要
DT[(条件),!“条件”,with=FALSE]
对于我来说
mDT=DT[(条件),!“条件”]
不起作用,但是使用
DT[(条件),(col1,col2)]
@user1981275哦,这是一个版本控制问题。在data.table的最新版本中,此语法有效。对于旧版本,您需要
DT[(条件),!“条件”,带=FALSE]