获取向量中每次运行的最后一个元素的索引

Jan*_*nak 1 r

如何获取每次运行的最后一个元素的索引?

例如:让我们考虑一个向量

x=c(1,2,3,4,4,4,5,6,6,7,8,9,9,9,9) 
Run Code Online (Sandbox Code Playgroud)

想要获得输出向量

x1=1 2 3 6 7 9 10 11 15
Run Code Online (Sandbox Code Playgroud)

尝试使用:

rank(x)
Run Code Online (Sandbox Code Playgroud)

它没有给出理想的结果.

tal*_*lat 5

(可能是一个骗局,但在这里你去..)

你可以使用神奇的力量?rle结合cumsum:

cumsum(rle(x)$lengths)
#[1]  1  2  3  6  7  9 10 11 15
Run Code Online (Sandbox Code Playgroud)

输出rle是:

rle(x)
#Run Length Encoding
#  lengths: int [1:9] 1 1 1 3 1 2 1 1 4
#  values : num [1:9] 1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)