基于元素序列修改Vector

And*_*d_R 6 r transformation vector

如何转换以下向量:

x <- c(0, 0, 0, 1, 0, 3, 2, 0, 0, 0, 5, 0, 0, 0, 8)
Run Code Online (Sandbox Code Playgroud)

进入所需的形式:

y <- c(1, 1, 1, 1, 3, 3, 2, 5, 5, 5, 5, 8, 8, 8, 8)
Run Code Online (Sandbox Code Playgroud)

任何想法都将受到高度赞赏.

tal*_*lat 3

这是另一种仅使用基本 R 的方法:

idx <- x != 0
split(x, cumsum(idx) - idx) <- x[idx]
Run Code Online (Sandbox Code Playgroud)

x 向量现在是:

x
#[1] 1 1 1 1 3 3 2 5 5 5 5 8 8 8 8
Run Code Online (Sandbox Code Playgroud)