On Sep 21, 2010, at 6:31 AM, Lorenzo Isella wrote:

Dear All,
Consider a simple example

a<-c(1,4,3,0,4,5,6,9,3,4)
b<-c(0,4,5)
c<-c(5,4,0)

I would like to be able to tell whether a sequence is contained (the order of the elements does matter) in another one e.g. in the example above, b is a subsequence of a, whereas c is not. Since the order matters, I cannot treat the sequences above as sets (also, elements are repeated).
Does anyone know a smart way of achieving that?

> grep(paste(c, collapse="#"), paste(a, collapse="#"))
integer(0)
> grep(paste(b, collapse="#"), paste(a, collapse="#"))
[1] 1


Looking at that output I am wondering if you might need to also put markers at the ends of the arguments.
> grep(paste("#",b,"#", collapse="#"), paste("#",a,"#", collapse="#"))
[1] 1
# To prevent a match like c(1,2,3) with c(101,2,303).

There is also an istrings package in the BioConductor repository that provides more extensive string matching facilities.

--

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org 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.

Reply via email to