R - 摆脱向量中的重复元素

时间:2013-10-11 18:19:54

标签: r

我正在尝试从任何整数向量中删除重复元素,但没有内置函数:duplicated()unique()anyDuplicated()。但结果必须与unique()的结果相同。

到目前为止,我设法从vector中获取值递增的顺序(这还不够好)。我做了如下(对于给定的向量):

vec <- c(1,2,2,4,1,1,5,6,3,9,0,4)

我可以使用vec <- sort(vec)然后使用rle(vec)$val来按递增顺序获取值的向量。我还设法通过sort(vec,index.return=TRUE)$ix从排序函数中获取排序向量并使用它我想将此排序应用于result向量(但是由于resultvec更短,因此不可能{ {1}})。

任何想法如何解决这个问题?提前致谢

3 个答案:

答案 0 :(得分:3)

你可以这样做:

> vec[match(vec, vec) == seq_along(vec)]
# [1] 1 2 4 5 6 3 9 0

答案 1 :(得分:0)

如何以不自然的方式做事......

> vec[rank(vec,t="first")==rank(vec,t="min")]
[1] 1 2 4 5 6 3 9 0
> vec[{o<-outer(vec,vec,"-");rowSums((o==0) * (row(o)>col(o)))==0}]
[1] 1 2 4 5 6 3 9 0
> vec[!mapply("%in%",vec,lapply(seq_along(vec),function(x) head(vec,x-1)))]
[1] 1 2 4 5 6 3 9 0

答案 2 :(得分:0)

我找到了非常简单的解决方案。它足以执行: union(vec,vec)