r

时间:2015-06-09 18:18:12

标签: r set

我想有效地比较两个集合并使用setdiff和intersect函数,但是没有按照我想要的方式工作。我想比较两组的元素,看看哪些元素是不同的。

例如:

Aset = c("AAAAA", "AABBB", "AAABB", "BBBBB")
Bset = c("AAABB" ,"AAABB", "BBBAA", "BBBBB")

 # present in Aset but not in Bset 
setdiff(Aset, Bset)
[1] "AAAAA" "AABBB"

#present in Bset but not in Aset 
setdiff(Bset, Aset)
[1] "BBBAA"

# both in Aset in Bset 
intersect (Aset, Bset)
[1] "AAABB" "BBBBB"

然而,当我重复值时,这会将其视为一个元素(在数学上是正确的),但我想看看有多少元素匹配而不考虑重复。

Cset = c("AAAAA", "BBBBB", "AAABB", "BBBBB")
Dset = c("AAABB" ,"AAABB", "ABBBB", "BBBBB")

 # present in Aset but not in Bset 
setdiff(Cset, Dset)
[1] "AAAAA"

在Dset中设置Cset还有一个BBBB。所以我想要一个可以考虑重复值的替代函数,并给出类似的东西:

  [1] "AAAAA"  "BBBBB"

交叉也显示类似的行为(根据定义更正)。

Eset = c("AAAAA", "BBBBB", "AAAAA", "BBBBB")
Fset = c("BBBBB" ,"AAAAA", "BBBBB", "AAAAA")

intersect (Eset, Fset) 
[1] "AAAAA" "BBBBB"

我希望看到所有四个都匹配。

[1] "AAAAA" "BBBBB"  "AAAAA" "BBBBB"

寻找符合我需要的替代功能 ..

0 个答案:

没有答案