您也可以使用data.tables二进制连接library(data.table)setkey(setDT(df), heads)[!df1]# heads# 1: row1# 2: row2# 3: row4编辑:起始数据表v1.9.6+我们可以在不设置键的情况下连接data.tableonsetDT(df)[!df1, on = "heads"]EDIT 2:起始数据表v1.9.8+ fsetdiff介绍,它基本上是上述解决方案的一个变体,仅在x数据表,例如x[!y, on = names(x)]..如果all设为FALSE(默认行为),则只在x会被归还。对于每个数据表中只有一列的情况,以下内容将与前面的解决方案等效fsetdiff(df, df1, all = TRUE)