Может быть немного запутанным, но стоит того, чтобы отметить только в случае:
m <- regexpr(paste0(x,collapse=""),paste0(z,collapse = ""),fixed=T)
seq(m,length.out=length(x))
Идея заключается в том, чтобы превратить каждый вектор в текстовой строке, а затем обнаружил, где первая строка в секунду.
Позиция матча дает начальную позицию, длина первого вектора дает количество индексов, которые мы должны вернуть.
Минусом он сломается со значениями выше 9.
Edit, чтобы объяснить, почему это может произойти сбой:
> x2 <- c(3,4)
> y2 <- c(1,34,5)
> m <- regexpr(paste0(x2,collapse=""),paste0(y2,collapse = ""),fixed=T)
> seq(m,length.out=length(x))
[1] 2 3
Это соответствует две позиции, но это не должно совпадать.
[Соответствующий] (http://stackoverflow.com/questions/33027611/how-to-index-a-vector-sequence-within-a-vector-sequence/33044729#33044729) – Tensibai
@PierreLafortune Я очень unsure, цель связана, но не идентична (возвращает длину совпадений, а не индексы). – Tensibai
Маркировка как обман. Ответ Ричарда ниже должен работать на вас. Если эффективность является проблемой, любой ответ на цель обмана должен делать то же самое, что и Ричард при завершении, например, 'lapply (find_pat (x, y), function (s) seq (from = s, length.out = length (х))) ' – Frank