2014-11-05 65 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