【问题标题】:Replacing multiple substrings of the same string simultaneously in R在R中同时替换同一字符串的多个子字符串
【发布时间】:2015-12-30 12:36:40
【问题描述】:

我希望将字符串向量中的拉丁字符替换为普通字符(例如 é 到 e、á 到 a 等)。我也希望为大型向量执行此操作,因此我将在循环中替换这些字符。我试图用下面的一个词来做到这一点:

phrase <- "ÁÉÍÓÚ"
spec.elements <- c("[ÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑÇ]")

if (str_detect(phrase,spec.elements) == TRUE){
  str_replace(phrase, "Á", "A") & str_replace(phrase, "Ú", "U")
}

我收到以下错误:

Error in str_replace(phrase, "Á", "A") & str_replace(phrase, "Ú", "U") : 
  operations are possible only for numeric, logical or complex types

我也尝试了以下,输出显然不是合适的结果:

> str_replace(phrase, "[ÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑÇ]", "[AAAEEEIIIOOOUUUNC]")
[1] "[AAAEEEIIIOOOUUUNC]ÉÍÓÚ"

谁能帮我将检测到的所有特殊字符替换为常规字符,而无需单独为每个特殊字符打开 if 语句?

【问题讨论】:

    标签: r string substring special-characters str-replace


    【解决方案1】:

    我们可以使用chartr

    if(grepl(spec.elements, phrase)){
     chartr('ÁÚ', 'AU', phrase)}
     #[1] "AÉÍÓU"
    

    【讨论】:

      【解决方案2】:

      也许chartr 满足您的需求:

      phrase <- c("ÁÉÍÓÚ", "ÚÓÍÉÁ")
      spec.elements <- c("ÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑÇ")
      spec.elements.rep <- c("AAAEEEIIIOOOUUUNC")
      chartr(old=spec.elements, new=spec.elements.rep, x=phrase)
      # [1] "AEIOU" "UOIEA"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 2015-04-01
        • 2020-08-31
        • 2015-11-09
        • 2022-12-15
        • 2013-05-25
        相关资源
        最近更新 更多