如何使用R中的grep()从数据框中选择行

时间:2015-03-29 20:00:11

标签: regex r

我正在尝试根据其中一列的内容从数据框中选择行。我正在使用grep()但是当尝试匹配内容的结尾时,它只匹配最后提交的模式。

这是代码:

df1 <- data.frame(cName=c(
    'A Co', 'B Co',  'C Co', 'D Co', 
    'F Llc', 'G Llc', 'H Llc', 'I Llc',
    'P Inc', 'Q Inc', 'R Inc', 'S Inc'))    
tName <- grep( ("Inc$ | Llc$"),df1$cName, value = T)
tName
[1] "F Llc" "G Llc" "H Llc" "I Llc"

我希望它能够返回'Inc' and 'Llc'的所有出现次数。但是,只返回正则表达式中的最后一个。我尝试了括号,括号和[:space:]的各种组合但没有成功。怎么了? 谢谢你的任何建议。

1 个答案:

答案 0 :(得分:1)

此处the code that works符合预期:

df1 <- data.frame(cName=c(
    'A Co', 'B Co',  'C Co', 'D Co', 
    'F Llc', 'G Llc', 'H Llc', 'I Llc',
    'P Inc', 'Q Inc', 'R Inc', 'S Inc'))    
tName <- grep( ("(Inc|Llc)$"),df1$cName, value = T)
tName

输出:[1] "F Llc" "G Llc" "H Llc" "I Llc" "P Inc" "Q Inc" "R Inc" "S Inc"

原始正则表达式没有按预期工作,因为它在字符串结束锚之后需要一个空格,这是不可能的。您可以看到regex explanation at regex101.com