[英]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.