[R] Regular expressions
Taylor, Z Todd
todd.taylor at pnl.gov
Wed Jan 11 19:50:27 CET 2006
"Ales Ziberna" <aleszib at gmail.com> writes:
> Dear useRs!
>
> I have the following problem. I would like to find objects in
> my environment
> that have two strings in it. For example, I might want to
> find objects that
> have in their names "MY" and "TARGET". I do not care about
> the ordering of
> these two substrings in the name, neither what is in front, behind or
> between them, the only thing important is that both words are
> present. I
> apologize if this is covered in help pages (then I did not
> understand it by
> reading them several times) or it was answered previously
> (then I did not
> find it).
>
> Since "ls" with argument pattern essentially uses "grep" (if I am not
> mistaken), I have an example for "grep"
>
> text<-c("somethigMYsomthing elseTARGET another thing","MY
> somthing TARGET
> another thing","somethig somthing elseTARGETMY another
> thing","somethigMTARGETY another thing")
>
> grep(pattern="MY&TARGET", x=text)
> #I would like to get 1 2 3 and not 4 or actually their names using
> text[grep(pattern="MY&TARGET", x=text)]
> #of course, the "pattern" in this case is wrong
>
> I know I can do
>
> text[grep(pattern="MY", x=text)][grep(pattern="TARGET",
> x=text[grep(pattern="MY",x=text)])]
>
> However I hope there exists a more elegant way.
>
> Thanks in advance for any suggestions!
>
> Best,
> Ales Ziberna
How about:
text[grep("(MY|TARGET)", text)]
That works on my Redhat box, R version 2.2.0.
--Todd
--
Why does clip mean both cut apart and fasten together?
More information about the R-help
mailing list