袋子差异(类似于setdiff()但不适用于套装)

时间:2011-03-04 19:22:10

标签: r set subtraction

在R中,是否有一些简单的方法来做多集(即“包”)差异,类似于setdiff(),但保留输入向量中的顺序和多重性?

例如,假设x <- c(1,2,2,3,1,5,4,4,5,3)y <- c(2,1,5,5)。我正在寻找一个函数bagdiff()bagdiff(x,y)c(2,3,1,4,4,3),即yx的第一次出现的元素已被删除,具有多样性

(在我的实际任务中,我不会真正关心输出的顺序,所以只考虑多重性是正确的,但一般有序的情况似乎值得解决。)

1 个答案:

答案 0 :(得分:3)

有一个sets模块接近您描述的内容。类似的东西:

library(sets)
gset_difference(as.gset(x), as.gset(y)) 
# gives
{1 [1], 2 [1], 3 [2], 4 [2]}