[R] matching a sequence in a vector?

chuck.01 CharlieTheBrown77 at gmail.com
Wed Feb 15 06:37:23 CET 2012


this is ugly, but...

l <-length(patrn)
l2 <-length(exmpl)

out <- vector("list")
for(i in 1:(l2-l+1))
     {
exmpl[i:(i+l-1)]
patrn==exmpl[i:(i+l-1)]
if(all(patrn==exmpl[i:(i+l-1)]))
{ out[[i]] <- i  } else { out[[i]] <- "NA"}
      }

out <- do.call(c, out)
as.numeric(out[which(out!="NA")])


## Cheers and HTH



Redding, Matthew-2 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
> 
> Suggestions very much appreciated!
> 
> Kind regards,
> 
> 
> 
> 
> Matt Redding, Ph.D.
> Principal Scientist
> Geochemist/Soil Chemist
> Queensland Primary Industries & Fisheries
> DEEDI
> PO Box 102, Toowoomba, 4350, Qld
> ph: 0746 881372
> fax: 0746 881192
> 
> 
> ********************************DISCLAIMER**************...{{dropped:15}}
> 
> ______________________________________________
> R-help@ mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 


--
View this message in context: http://r.789695.n4.nabble.com/matching-a-sequence-in-a-vector-tp4389523p4389560.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list