[R] matching a sequence in a vector?
Berend Hasselman
bhh at xs4all.nl
Wed Feb 15 10:26:44 CET 2012
On 15-02-2012, at 05:17, Redding, Matthew wrote:
> Hi All,
>
>
> I've been trawling through the documentation and listserv archives on this topic -- but
> as yet have not found a solution. I'm sure this is pretty simple with R, but I cannot work out how without
> resorting to ugly nested loops.
>
> As far as I can tell, grep, match, and %in% are not the correct tools.
>
> Question:
> given these vectors --
> patrn <- c(1,2,3,4)
> exmpl <- c(3,3,4,2,3,1,2,3,4,8,8,23,1,2,3,4,4,34,4,3,2,1,1,2,3,4)
>
> how do I get the desired answer by finding the occurence of the pattern and returning the starting indices:
> 6, 13, 23
>
patrn.rev <- rev(patrn)
w <- embed(exmpl,length(patrn))
w.pos <- apply(w,1,function(r) all(r == patrn.rev))
which(w.pos)
You can substitute the last three lines to get a oneliner.
Berend
More information about the R-help
mailing list