在R中,我如何获得向量元素发生变化的位置

时间:2016-10-08 07:40:13

标签: r

例如,我有一个序列:

seq = sample(c(0,1), 11, replace = T)
1 0 0 0 1 1 1 1 1 1 0

期望的输出:

1,2,5,11

1 个答案:

答案 0 :(得分:2)

试试这个:

vec <- c(1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0)
c(1, which(diff(vec)!=0)+1)
#[1]  1  2  5 11

检查diff()是否不等于零用于检测序列的变化。使用which()检索发生更改的索引。由于diff()将向量的长度减少1并且所需的输出包含1作为第一个索引,因此结果与前导1的串联以及索引号向+1的移位是完成的。