Home > Software engineering >  Unique with subsequent element only
Unique with subsequent element only

Time:04-13

My input is a vector like this

v = c(1,2,2,3,4,5,4,1,1)

unique(v) == c(1,2,3,4,5)

instead, I need to check and operate uniqueness only on pairs of subsequent element:

.f(v) == c(1,2,3,4,5,4,1)

CodePudding user response:

Use rle from base R and extract the 'values'

rle(v)$values
[1] 1 2 3 4 5 4 1

unique gets the unique values from the whole dataset, whereas rle returns a list of 'values' and its lengths for each adjacent unique value


Or another option is to do a comparison with the current and adjacent value and apply duplicated to subset the vector

v[!duplicated(cumsum(c(TRUE, v[-1] != v[-length(v)])))]
[1] 1 2 3 4 5 4 1

CodePudding user response:

Another possible solution:

v[v != dplyr::lag(v, default = Inf)]

#> [1] 1 2 3 4 5 4 1
  •  Tags:  
  • r
  • Related