我正在尝试根据其中一列的内容从数据框中选择行。我正在使用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:]
的各种组合但没有成功。怎么了?
谢谢你的任何建议。
答案 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。