例如,我有一个序列:
seq = sample(c(0,1), 11, replace = T)
1 0 0 0 1 1 1 1 1 1 0
期望的输出:
1,2,5,11
答案 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的移位是完成的。