在R中同时替换同一字符串的多个子字符串
Replacing multiple substrings of the same string simultaneously in R
我希望将字符串向量中的拉丁字符替换为普通字符(例如 é 到 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 语句?
我们可以使用chartr
if(grepl(spec.elements, phrase)){
chartr('ÁÚ', 'AU', phrase)}
#[1] "AÉÍÓU"
也许chartr
满足您的需求:
phrase <- c("ÁÉÍÓÚ", "ÚÓÍÉÁ")
spec.elements <- c("ÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑÇ")
spec.elements.rep <- c("AAAEEEIIIOOOUUUNC")
chartr(old=spec.elements, new=spec.elements.rep, x=phrase)
# [1] "AEIOU" "UOIEA"
我希望将字符串向量中的拉丁字符替换为普通字符(例如 é 到 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 语句?
我们可以使用chartr
if(grepl(spec.elements, phrase)){
chartr('ÁÚ', 'AU', phrase)}
#[1] "AÉÍÓU"
也许chartr
满足您的需求:
phrase <- c("ÁÉÍÓÚ", "ÚÓÍÉÁ")
spec.elements <- c("ÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑÇ")
spec.elements.rep <- c("AAAEEEIIIOOOUUUNC")
chartr(old=spec.elements, new=spec.elements.rep, x=phrase)
# [1] "AEIOU" "UOIEA"