2014-11-05 91 views
1

我想寫這將有一個功能數字矢量「X」上的投入,將輸出創建數字矢量十一指標 ,使得x(I)= = X(I + 1)獲得R中重複鄰居元素的索引向量

到目前爲止,我寫了這樣的功能鄰居:

neighbor <- function(l) { 
    stopifnot(is.numeric(l)) 
    w <- sapply(l, function(x) which(l[x]==l[x+1])) 
    w 
} 

所以執行這個指令:

鄰居(C(1,1,0,1,1,1,0,0,1,1,0))

應該產生一個數值向量:

1, 4,5,7,9

但我無法得到它的工作。有任何想法嗎?

我正在尋找一個沒有控制流和if-else指令的優雅解決方案。

回答

2

diff將有助於這一點:

x <- c(1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0) 
which(diff(x) == 0) 
+0

謝謝你,它正在像一個魅力。我會盡可能接受。 – oski86 2014-11-05 21:19:10