Is there an R function to find the index of regexp matches in a character vector?
match, r, regex
Solution
You're just looking for `grep`:
x <- c("arm","foot","lefroo", "bafoobar")
r <- c("ar","^ba","$m","foo")
Get the first regex match index:
sapply(r, function(y) grep(y,x)[1])
ar ^ba $m foo
1 4 NA 2
Get all regex match indexes:
sapply(r, function(y) grep(y,x))
$ar
[1] 1 4 # returns matches of ar in x
$`^ba`
[1] 4
$`$m`
integer(0)
$foo
[1] 2 4
Problem
I'm looking for an R function that works like `match` only for regular expression matching instead of equality. In other words, if I have a variable `r` that is a character vector of regular expressions and a variable x which is a character vector, I want the function to return a numeric vector the same length as `r` that gives, for each regular expression, the index of the first element that matches that regular expression. Note that I don't want the position within the string where the regular expression matches. I want the index of the element that matches each regular expression.