On Feb 13, 2014, at 8:43 AM, Rainer M Krug <rai...@krugs.de> wrote: > Hi > > I want to search for multiple pattern as grep is doing for a single > pattern, but this obviously not work: > >> grep("an", month.name) > [1] 1 >> grep("em", month.name) > [1] 9 11 12 >> grep("eb", month.name) > [1] 2 >> grep(c("an", "em", "eb"), month.name) > [1] 1 > Warning message: > In grep(c("an", "em", "eb"), month.name) : > argument 'pattern' has length > 1 and only the first element will be used >> > > Is there an equivalent which returns the positions as grep is doing, but > not using the strict full-string matching of match()? > > I could obviously do: > >> unlist( sapply(pat, grep, month.name ) ) > an em1 em2 em3 eb > 1 9 11 12 2 > > but is there a more compact command I am missing? > > Thanks, > > Rainer
The vertical bar '|' acts as a logical 'or' operator in regex expressions: > grep("an|em|eb", month.name) [1] 1 2 9 11 12 > grep("an|em|eb", month.name, value = TRUE) [1] "January" "February" "September" "November" "December" Regards, Marc Schwartz ______________________________________________ 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.