Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用gsub进行精确的字符串匹配?_R_String_Gsub - Fatal编程技术网

如何在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"