Мы можем использовать ave
, создавать группы при каждом появлении 0 в x
и rev
, упорядочивая последовательность для каждой группы.
ave(x, cumsum(x == 0), FUN = rev)
#[1] 4 3 2 1 0 3 2 1 0 5 4 3 2 1 0
Данные
x <- c(0, 1, 2, 3, 4, 0, 1, 2, 3, 0, 1, 2, 3, 4, 5)