簡體   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