在R中理解grep with fixed = T

siv3szwd  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(118)

我检查了不同的帖子,但仍然无法弄清楚为什么这不起作用:

c=c("HI","NO","YESS")
grep("YES",c,fixed=T)
[1] 3

如果我使用fixed = T,为什么我仍然得到一个结果时,没有完全匹配的“是”。我只希望完全匹配,就像我在bash中使用grep -w

bgtovc5b

bgtovc5b1#

这仅仅意味着您匹配的是一个字符串而不是一个正则表达式,但是字符串仍然可以是一个子字符串。

> x=c("HI","NO","YESS") #better not to name variables after common functions
> grep("^YES$",x,fixed=F) 
integer(0)

编辑per @nicola:这是可行的,因为^表示字符串的开头,$表示字符串的结尾,所以^xxxx$强制整个字符串匹配xxxx

x0fgdtte

x0fgdtte2#

最好的解决方案似乎是使用\b作为单词边界,就像grep("\\bYES\\b",x)。在其他情况下,你有限制,例如,如果你有c=c("HI","NO","YES S")c=c("HI","NO","YES,S")^YES$which(c=="YES")将无法帮助你在这些字符串中找到“YES”。
在此找到解决方案:https://stackoverflow.com/a/26813671/14590183

相关问题