我正在尝试编写一个函数,它会在输入中包含数字向量 “x”,并在输出上创建数字向量 xi 索引,这样x(i)== x(i + 1)
到目前为止,我写了这样的函数邻居:
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指令的优雅解决方案。
答案 0 :(得分:2)
diff
将对此有所帮助:
x <- c(1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0)
which(diff(x) == 0)