2015-10-22 88 views
1

從矢量在矢量的每個值的第一次出現:根據條件

v <- c(2,2,2,2,5,7,7,5,5,7,3,3,3) 

並根據條件v[i] != v[i+1],我怎樣才能獲得:

[1] 2 5 7 5 7 3 

回答

4

rle功能將做這個。 rle代表遊程編碼。

v <- c(2,2,2,2,5,7,7,5,5,7,3,3,3) 
rle(v)$values 
## [1] 2 5 7 5 7 3 
1

這可以通過使用diff

v[c(TRUE,diff(v)!=0)] 
#[1] 2 5 7 5 7 3 

或者從library(data.table)

library(data.table) 
setDT(list(v))[,V1[1L] ,rleid(V1)]$V1 
#[1] 2 5 7 5 7 3 
使用 rleid也做