我想找到在下面的向量中等于"1"的连续重复元素的起始和结束索引.矢量具有可以等于"1"或NA的值.
例如:
out2
[1] "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1" "1"
[21] "1" NA NA NA NA NA "1" "1" "1" "1" "1" "1" NA NA NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
输出应如下所示
[,1] [,2]
[1,] 1 21
[2,] 27 32
Run Code Online (Sandbox Code Playgroud)
试试rle:
x <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, NA, NA, NA, NA, NA, 1, 1, 1, 1, 1, 1, NA, NA, NA, NA, NA,
NA, NA, NA)
with(rle(x), {
ok <- !is.na(values)
ends <- cumsum(lengths)[ok]
starts <- ends - lengths[ok] + 1
cbind(starts, ends)
})
Run Code Online (Sandbox Code Playgroud)
赠送:
starts ends
[1,] 1 21
[2,] 27 32
Run Code Online (Sandbox Code Playgroud)