我正在寻找一个像 match
一样起作用的R函数,仅用于正则表达式匹配而不是均等。换句话说,如果我有一个可变的 r
,它是正则表达式的字符向量和一个是字符向量的变量x,我希望该函数返回数字向量的长度与r
相同的长度,该长度与每个正则表达式,对于每个正则表达式,与正则表达式匹配的第一个元素的索引。请注意,我不希望在正则表达式匹配的字符串中的位置。我想要与每个正则表达式匹配的元素的索引。
您只是在寻找 grep
:
x <- c("arm","foot","lefroo", "bafoobar")
r <- c("ar","^ba","$m","foo")
获取第一个正则匹配索引:
sapply(r, function(y) grep(y,x)[1])
ar ^ba $m foo
1 4 NA 2
获取所有正则匹配索引:
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