在R中的向量中标识相同的连续值

时间:2016-03-30 21:47:25

标签: r

我是新来的,而不是真正的专业人士。希望你们能帮助我。

我有一个向量 ls ,并希望在那里识别至少三个相同的连续值。

示例:

ls <- c(1, -1,  1, -1, -1, -1,  1,  1,  1, -1, -1, -1, -1, -1, -1)

现在我想确定 ls 中的位置,其中最小三个连续-1的开始。这里的输出(位置)将是:

[1]  4  10

你们有没有想法?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用rle

 r <- rle(ls)
 (cumsum(r$lengths)-r$lengths+1)[r$value==-1 & r$length>=3]
 #> [1]  4 10

运行长度的累积总和给出了运行的终点。减去长度会在它们开始之前立即定位,因此添加一个。为值为-1并且运行长度至少为3的位置子集结果。