我需要在R中编写一个查询来匹配列名中的部分字符串。我在SQL中寻找类似于LIKE运算符的东西。例如,如果我知道字符串的开头,中间或结尾部分,我会以格式编写查询:
LIKE 'beginning%middle%'
在SQL中它将返回匹配的字符串。在pmatch
或grep
,我似乎只能指定“开始”。 ,'结束'而不是订单。我正在寻找R中是否有类似的功能?
例如,假设我正在寻找向量:
y<- c("I am looking for a dog",
"looking for a new dog", "a dog", "I am just looking")
假设我想编写一个选择"looking for a new dog"
的查询,我知道字符串的开头是"looking"
,字符串的结尾是"dog"
。如果我执行grep("dog",y)
,它将返回1,2,3
。有没有办法在grep
中指定开头和结尾?
答案 0 :(得分:6)
grep
函数支持正则表达式,使用正则表达式,几乎可以匹配任何内容
y<- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
grep("looking.*dog",y, value=T)
# [1] "I am looking for a dog" "looking for a new dog"
此处此模式会查找looking
,然后查找“可能的内容”,然后dog
。所以这应该做你想要的。
答案 1 :(得分:4)
在正则表达式中,^
指定字符串的开头,$
指定结尾,因此:
y<- c("I am looking for a dog", "looking for a new dog", "a dog", "I am just looking")
grep("^looking.*dog$", y)
[1] 2