繁体   English   中英

获取第1个第1次和第2次出现之间的向量索引

[英]Get index of vector between 1nd and 2nd appearance of number 1

假设我们有一个向量:

v <- c(0,0,0,1,0,0,0,1,1,1,0,0)

预期产量:

v_index <- c(5,6,7)

v始终以0开始和结束。 在两个1秒之间只有一个零簇的可能性。

看似简单,无法理解我的头脑......

我认为这样做

which(cumsum(v == 1L) == 1L)[-1L]
## [1] 5 6 7

这里的想法是将“one”的所有实例分成组并选择第一组,同时在开头删除“one”的出现(因为你只想要零)。

v <- c(0,0,0,1,0,0,0,1,1,1,0,0)
v_index<-seq(which(v!=0)[1]+1,which(v!=0)[2]-1,1)


> v_index
[1] 5 6 7

说明:我问哪些索引不等于0:

which(v!=0)

然后我从该向量中获取第一个和第二个索引,并从中创建一个序列。

这可能是最简单的答案之一。 找到哪些项等于1,然后使用前两个索引生成序列,递增第一个并递减另一个。

block <- which(v == 1)
start <- block[1] + 1
end <- block[2] - 1
v_index <- start:end
v_index
[1] 5 6 7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM