R - 如何从向量中删除满足多个条件之一的项

4

我有一个大的数据框,其中包含一个名称列,并且由于我的数据性质,名称会重复。我还有一个子集名称向量,需要将其从数据框中剔除。因此,我想要识别数据框中与要删除的名称列表中的名称匹配的每个实例的行号。以下是我尝试做的示例...但我无法让代码工作。谢谢!

a=c("tom", "bill", "sue", "jim", "tom", "amy")
b=c(12,15,7,22,45,5)

ab=data.frame(a,b)

ab

drop=which(ab$a==c("tom", "sue")) #only identifies those matching "tom"

drop

ab2=ab[-drop,]

ab2
2个回答

9

您正在寻找%in%

drop=which(ab$a %in% c("tom", "sue"))

然而,更简洁地说:
ab[!ab$a %in% c('tom', 'sue'),]

1
你应该看一下sqldf包。你可以在R数据框上执行SQL选择操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接