我正在尝试从任何整数向量中删除重复元素,但没有内置函数: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
向量(但是由于result
比vec
更短,因此不可能{ {1}})。
任何想法如何解决这个问题?提前致谢
答案 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)