如何获取每次运行的最后一个元素的索引?
例如: 让我们考虑一个向量
x=c(1,2,3,4,4,4,5,6,6,7,8,9,9,9,9)
想要获得输出向量
x1=1 2 3 6 7 9 10 11 15
尝试使用:
rank(x)
没有给出理想的结果。
答案 0 :(得分:5)
(可能是一个傻瓜,但是你走了......)
您可以使用?rle
与cumsum
结合的神奇力量:
cumsum(rle(x)$lengths)
#[1] 1 2 3 6 7 9 10 11 15
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
答案 1 :(得分:1)
使用R
中的which()函数 k<-as.vector(unique(x))
x1<-vector()
for(i in 1:length(k)){
x1[i]=tail(which(x==k[i]),1)
}