估计R中的向量中有多少个连续的真实元素

Gab*_*gro 2 boolean r

我有一个非常大的布尔向量(即TF),并且我想简单地能够估计元素之间T向量中包含多少个连续的“块” 。F

一个带有3个T元素的这些连续“块”的向量的简单示例:

x <- c(T,T,T,T,F,F,F,F,T,T,T,T,F,T,T)
Run Code Online (Sandbox Code Playgroud)

输出:

1,1,1,1,0,0,0,0,2,2,2,2,0,3,3
Run Code Online (Sandbox Code Playgroud)

tmf*_*mnk 5

你可以做:

rle <- rle(x)
rle$values <- with(rle, cumsum(values) * values)
inverse.rle(rle)

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

以及基本思想的简化和更优雅的版本(由@Lyngbakr提出):

with(rle(x), rep(cumsum(values) * values, lengths))
Run Code Online (Sandbox Code Playgroud)