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

标签 r string substring 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")
}

我收到以下错误:
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"

关于在R中同时替换同一字符串的多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904822/

相关文章:

r - 在 R 中将数组列表转换为数组数组(保留子数组的形状)

r - R中数组(列表())和列表()之间的区别

ios - 如何快速将字典中的特殊字符转换为unicode

javascript - 缩短长字符串

c++ - 在另一个 vector <string> 中定位子 vector <string>

r - 根据另一列中的位置值在 data.table 的一列中选择分隔数据

r - ':=' 没有可见的全局函数定义

Python检查字符串是否包含Python中的所有单词

php - 如何将指定的子字符串包裹在html标签中?

sql - 在 SQL 中为整个列提取两个分隔符之间的值