计算 r 中 true/talse 个周期的数量

counting number of true/talse periods in r

我有一个从时间序列派生的布尔向量。它基本上看起来像这样:c(true, false, true, true, false, false, false, true, true...).

我想计算向量为真的周期。示例:对于这样的向量:c(true, true, false, true) 它将是 2(开始时有 1 个长的真周期,最后有 1 个短周期)。

向量的开头可以包含 NA。

我想到了类似的东西:

aaa <- c(NA,F,T,T,T,F)    
for(j in 1:(length(aaa)-1)){  
  if(aaa[j]!=aaa[j+1]){  
    # add a counter that returns [1]  
  }  
} 

============================================= ====

编辑:这对我来说很好用:

data.frame("#"=unlist(rle(aaa)[1]),"length"=unlist(rle(aaa)[2]))

这个怎么样:

aaa[is.na(aaa)] <- FALSE
sum(rle(aaa)$values)

NAs转换为FALSE,然后查看运行长度编码中有多少个TRUE值(TRUE存储为1, FALSE 为零).