根据条件,向量中的每个值首次出现

时间:2015-10-22 23:18:03

标签: r

从矢量:

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

这也可以使用diff

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

或使用rleid

中的library(data.table)
library(data.table)
setDT(list(v))[,V1[1L] ,rleid(V1)]$V1
#[1] 2 5 7 5 7 3