如何在另一个中获得一个 data.frame 的相对补码?

How to get relative complement of one data.frame in another?

我有两个 data.frame 对象需要从一个到另一个获取其相对补集。我从这个站点检查了类似的 post,当然有人已经问过,但它是关于矢量的,没关系。但是,我尝试了此站点中现有 post 的解决方案,但没有得到预期的输出。我尝试了几种方法,例如 setdiff、pmatch 反之亦然,但没有一种是 return 我的预期输出。谁能提出有效完成这项任务的可能方法?

例子

foo <- data.frame( start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6))
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))

期望的输出:

根据wiki中的补集理论,我的预期输出如下:

  start stop
1     5    7
2     9   11
3    13   15
4    17   19

如何获得一个 data.frame 与另一个相关的互补集?完成这项任务的正确方法是什么?谢谢

试试这个

library(dplyr)
output <- anti_join(foo,bleh)
output[order(output$start),]

使用 dplyr 包中的 setdiff 的另一个选项(@Frank 感谢您的更正)

setdiff(foo,bleh)
#  start stop
#1     5    7
#2     9   11
#3    13   15
#4    17   19