首页 > 解决方案 > R - 通过向量计数并刷新某个值?

问题描述

假设我有一个向量

vec <- c(3,0,1,1,0,3,0,1,3,0,0,0,3)

我希望能够使用值 3 作为刷新点来计算这个向量。所以,我想要的输出是

       vec   out
 [1,]    3    1
 [2,]    0    2
 [3,]    1    3
 [4,]    1    4
 [5,]    0    5
 [6,]    3    1
 [7,]    0    2
 [8,]    1    3
 [9,]    3    1
[10,]    0    2
[11,]    0    3
[12,]    0    4
[13,]    3    1

我将如何在 R 中执行此操作,最好不使用循环?

标签: rvector

解决方案


使用base R,您可以:

ave(vec, cumsum(vec == 3), FUN = seq_along)

 [1] 1 2 3 4 5 1 2 3 1 2 3 4 1

推荐阅读