计算r中向量的重复长度

Luc*_*ini 1 r

有没有一种有效的方法来计算重复指定值的向量部分的长度?例如,我想计算沿着每日降雨量值向量的无雨期的长度:

daily_rainfall=c(15, 2, 0, 0, 0, 3, 3, 0, 0, 10)
Run Code Online (Sandbox Code Playgroud)

除了使用循环遍历向量的明显但笨重的方法之外,我可以通过哪种更清晰的方式获得所需的答案

rainless_period_length=c(3, 2)
Run Code Online (Sandbox Code Playgroud)

鉴于上面的矢量?

Jac*_*kes 6

R具有内置函数"游程编码":

daily_rainfall <- c(15, 2, 0, 0, 0, 3, 3, 0, 0, 10)

runs <- rle(daily_rainfall)
rainless_period_length <- runs$lengths[runs$values == 0]

rainless_period_length
Run Code Online (Sandbox Code Playgroud)

输出:

[1] 3 2
Run Code Online (Sandbox Code Playgroud)