返回向量索引

Abr*_*rag 1 r vector

我有一个看起来像这样的矢量:

c(1,1,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5..)
Run Code Online (Sandbox Code Playgroud)

我想获得元素更改时的索引,即(1,5,9,...) 我知道如何使用for循环,但我正在尝试更快的方式,因为我的向量非常大.

谢谢,

akr*_*run 7

尝试

which(c(TRUE,diff(v1)!=0))
Run Code Online (Sandbox Code Playgroud)

要么

 match(unique(v1), v1)
Run Code Online (Sandbox Code Playgroud)

或者如果矢量已排序

 head(c(1, findInterval(unique(v1), v1)+1),-1)
Run Code Online (Sandbox Code Playgroud)

数据

v1 <- c(1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 
    4, 4, 5, 5, 5, 5, 5)
Run Code Online (Sandbox Code Playgroud)