在R中同时替换同一字符串的多个子字符串

MN *_*mal 4 string substring r special-characters str-replace

我希望将字符串向量中的拉丁字符替换为普通字符(例如é到e,á到a等).我也希望为一个大型向量做这个,所以我将在循环中替换这些字符.我试过用下面的一个单词做这个:

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

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

我收到以下错误:

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

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

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

任何人都可以帮助我将检测到的所有特殊字符替换为常规字符,而无需单独为每个特殊字符打开if语句吗?

akr*_*run 6

我们可以用 chartr

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