Select 并删除 r 中的行

Select and delete rows in r

我有一个数据框df

pw pl
30 40
32 39
29 38
32 41
31 39
28 42
31 42

df 的一个子集称为 subset

pw pl
29 38
32 41
31 39

我想删除 df 中存在于 subset 中的所有行,以便 df 看起来像这样

pw pl
30 40
32 39
28 42
31 42

我该怎么做?

如果 subset 确实是 df 的子集,并且没有其他行被省略或添加到 df,使用行名称的过滤器将起作用。

xy <- data.frame(sub = rep(letters[1:3], 9), val = runif(9))
xy.sub <- xy[xy$sub %in% "b", ]

xy[!rownames(xy) %in% rownames(xy.sub), ]

要匹配多个列,你可以这样做

xy[!(xy$val %in% xy.sub$val & xy$sub %in% xy.sub$sub), ] #notice the braces