-4

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

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

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向量(但是这是不可能的,因为result它更短vec)。

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

4

3 回答 3

3

你可以做:

> vec[match(vec, vec) == seq_along(vec)]
# [1] 1 2 4 5 6 3 9 0
于 2013-10-11T18:33:41.303 回答
0

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

于 2013-10-13T18:12:38.033 回答
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
于 2013-10-11T20:20:17.367 回答