获取数字 1 第一次和第二次出现之间的向量索引

问题描述 投票:0回答:3

假设我们有一个向量:

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

预期输出:

v_index <- c(5,6,7)

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

看起来很简单,但我无法理解......

r
3个回答
9
投票

我想这样就可以了

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

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


4
投票
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)

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


4
投票

我不知道答案是什么。有时候不知道更好。

© www.soinside.com 2019 - 2024. All rights reserved.