如何在R中使用gsub进行精确的字符串匹配?
我只想将原始数据如何在R中使用gsub进行精确的字符串匹配?,r,string,gsub,R,String,Gsub,我只想将原始数据MOUNTAIN中的第二个条目替换为MOUNTAIN VIEW。原始数据中的第一个条目已经正确。但是,当我执行gsub时,它将MOUNTAIN的两个实例都替换为MOUNTAIN VIEW。有人能帮我找到一个绕过这个问题的方法吗 我尝试了\\b,但没有成功,我明白原因。还有什么我可以做的吗?使用此处来匹配整个字符串: raw = c("MOUNTAIN VIEW","MOUNTAIN") x = gsub("MOUNTAIN", "MOUNTAIN VIEW", raw, igno
MOUNTAIN
中的第二个条目替换为MOUNTAIN VIEW
。原始数据中的第一个条目已经正确。但是,当我执行gsub
时,它将MOUNTAIN
的两个实例都替换为MOUNTAIN VIEW
。有人能帮我找到一个绕过这个问题的方法吗
我尝试了\\b
,但没有成功,我明白原因。还有什么我可以做的吗?使用此处来匹配整个字符串:
raw = c("MOUNTAIN VIEW","MOUNTAIN")
x = gsub("MOUNTAIN", "MOUNTAIN VIEW", raw, ignore.case = TRUE)
Current output: "MOUNTAIN VIEW VIEW" "MOUNTAIN VIEW"
Desired output: "MOUNTAIN VIEW" "MOUNTAIN VIEW"
如果需要,还可以使用捕获组并在替换呼叫中反向引用它:
sub('^MOUNTAIN$', 'MOUNTAIN VIEW', raw, ignore.case = TRUE)
# [1] "MOUNTAIN VIEW" "MOUNTAIN VIEW"
使用
agrep
-返回向量索引,因此您可以通过使用下标来轻松分配值:
sub('^(MOUNTAIN)$', '\\1 VIEW', raw, ignore.case = TRUE)
raw[agrep(“山”,raw)]
raw[agrep("MOUNTAIN", raw)] <- "MOUNTAIN VIEW"
raw
[1] "MOUNTAIN VIEW" "MOUNTAIN VIEW"