我有一个非常大的布尔向量(即T或F),并且我想简单地能够估计元素之间的 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)
你可以做:
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)
| 归档时间: |
|
| 查看次数: |
49 次 |
| 最近记录: |