如何在 R 中使用 gsub 进行精确的字符串匹配?
How do I do an exact string match using gsub in R?
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"
我只想将原始数据 MOUNTAIN
中的第二个条目替换为 MOUNTAIN VIEW
。原始数据中的第一个条目已经正确。但是当我执行 gsub
时,它会将出现的 MOUNTAIN
替换为 MOUNTAIN VIEW
。谁能帮我找到解决这个问题的方法?
我试过 \b
但它没有用,我明白为什么。还有什么我可以做的吗?
在这里使用 anchors 来匹配整个字符串:
sub('^MOUNTAIN$', 'MOUNTAIN VIEW', raw, ignore.case = TRUE)
# [1] "MOUNTAIN VIEW" "MOUNTAIN VIEW"
如果需要,您还可以使用捕获组并在替换调用中反向引用它:
sub('^(MOUNTAIN)$', '\1 VIEW', raw, ignore.case = TRUE)
使用 agrep
-returns 向量索引,因此您可以使用 subscripts
轻松赋值:
raw[agrep("MOUNTAIN", raw)] <- "MOUNTAIN VIEW"
raw
[1] "MOUNTAIN VIEW" "MOUNTAIN VIEW"