这是一个想法。imatch()
会发现all匹配的索引,以防有多个匹配集。它通过检查两个连续的索引(一次一对)并检查它们是否与索引相同来实现这一点。x
向量。不匹配的内容将被删除,并返回匹配的列表。
imatch <- function(x, y) {
Filter(
Negate(is.null),
lapply(seq_along(length(y)-1), function(i) {
ind <- i:(i+1)
if(identical(y[ind], x)) ind
})
)
}
imatch(c(-1, 1), c(1, -1, 1, 0, -1, 0, 0))
# [[1]]
# [1] 2 3
imatch(c(-1, 1), c(1, -1, 1, 0, -1, 1, 0))
# [[1]]
# [1] 2 3
#
# [[2]]
# [1] 5 6