2016-04-28 85 views
1

出現較晚離開它我有一個向量可能看起來像這樣的:刪除連續重複的值,但如果R中

t <- c(2,2,3,3,3,2,2,3,4,2,2,2,3,3,10,10,10,1,10,10) 

我想要的是一種簡單的方法會留下一個新的向量看起來像這樣:

t2 <- c(2,3,2,3,4,2,3,10,1,10) 

持有所有不同的元素(按照它們出現在t中的正確順序),但只有其中一個。最好不用循環,因爲通常我的矢量大約有6 000 000個元素長

我發現了一個類似的問題和Matlab的解決方案,但是我不能在R中實現它,並且還存在數字之間增加和減少的模式,這是不是在我的情況的情況下

Remove duplicates appearing next to each other, but keep it if it appears again later

回答

3

這是剛剛從rle功能values

> rle(t)$values 
[1] 2 3 2 3 4 2 3 10 1 10 

完整的輸出包括計每個重複的s。我們只在這裏獲得values組件。

或者你可以使用相同的算法Matlab代碼引用,它看起來像這樣:

> t[c(1,diff(t))!=0] 
[1] 2 3 2 3 4 2 3 10 1 10 
+0

非常感謝你,它的作品! –