【问题标题】:How do I do an exact string match using gsub in R? [duplicate]如何在 R 中使用 gsub 进行精确的字符串匹配? [复制]
【发布时间】:2015-05-22 03:00:18
【问题描述】:
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 VIEW 替换原始数据MOUNTAIN 中的第二个条目。原始数据中的第一个条目已经正确。但是当我执行gsub 时,它会将MOUNTAIN 的出现都替换为MOUNTAIN VIEW。谁能帮我想办法解决这个问题?

我尝试了\\b,但没有成功,我明白为什么。还有什么我可以做的吗?

【问题讨论】:

    标签: r string gsub


    【解决方案1】:

    这里改用anchors 来匹配整个字符串:

    sub('^MOUNTAIN$', 'MOUNTAIN VIEW', raw, ignore.case = TRUE)
    # [1] "MOUNTAIN VIEW" "MOUNTAIN VIEW"
    

    如果您愿意,您还可以使用捕获组并在替换调用中反向引用它:

    sub('^(MOUNTAIN)$', '\\1 VIEW', raw, ignore.case = TRUE)
    

    【讨论】:

      【解决方案2】:

      使用agrep - 返回向量索引,因此您可以使用subscripts 轻松分配值:

      raw[agrep("MOUNTAIN", raw)] <- "MOUNTAIN VIEW" 
      raw
      [1] "MOUNTAIN VIEW" "MOUNTAIN VIEW"
      

      【讨论】:

        猜你喜欢
        • 2015-04-17
        • 2010-10-08
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        相关资源
        最近更新 更多