2017-03-10 83 views
0

我想保留矢量中的非重複值,但不保留重複值中的一個元素。 unique()不適用於此。兩者都不會重複()。R:從矢量中提取非重複值(不保留重複值)

例如:

> test <- c(1,1,2,3,4,4,4,5,6,6,7,8,9,9) 
> unique(test) 
[1] 1 2 3 4 5 6 7 8 9 

而我想的結果是:-1,2,3,5,7,8-

對如何處理這個任何想法?謝謝!

回答

3

您可以使用ave算子組的唯一值除以lengthtest,只保留其長度爲1(即沒有重複的那些)

test[ave(test, test, FUN = length) == 1] 
#[1] 2 3 5 7 8 

如果test包含的那些字符,使用seq_along成Ave

test[ave(seq_along(test), test, FUN = length) == 1] 
+0

這可能對字符向量不起作用嗎? – arielle

+1

這裏不需要匿名功能 –

+1

謝謝,它的工作原理! – arielle

3

的第一個參數我們可以用duplicated

test[!(duplicated(test)|duplicated(test, fromLast=TRUE))] 
#[1] 2 3 5 7 8 
+1

謝謝,它的工作原理! – arielle

+0

imo這應該已經收到了滴答聲 - 在可能的情況下更好地處理矢量,而不是分裂和循環 – user20650