grep for multiple pattern?
On Feb 13, 2014, at 8:43 AM, Rainer M Krug <Rainer at 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