在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)
,即y
中x
的第一次出现的元素已被删除,具有多样性
(在我的实际任务中,我不会真正关心输出的顺序,所以只考虑多重性是正确的,但一般有序的情况似乎值得解决。)
答案 0 :(得分:3)
有一个sets模块接近您描述的内容。类似的东西:
library(sets)
gset_difference(as.gset(x), as.gset(y))
# gives
{1 [1], 2 [1], 3 [2], 4 [2]}