我是新来的,而不是真正的专业人士。希望你们能帮助我。
我有一个向量 ls ,并希望在那里识别至少三个相同的连续值。
示例:
ls <- c(1, -1, 1, -1, -1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1)
现在我想确定 ls 中的位置,其中最小三个连续-1的开始。这里的输出(位置)将是:
[1] 4 10
你们有没有想法?感谢。
答案 0 :(得分:1)
您可以使用rle
r <- rle(ls)
(cumsum(r$lengths)-r$lengths+1)[r$value==-1 & r$length>=3]
#> [1] 4 10
运行长度的累积总和给出了运行的终点。减去长度会在它们开始之前立即定位,因此添加一个。为值为-1并且运行长度至少为3的位置子集结果。