studio - utf-8 caracteres especiales
Reemplace los caracteres acentuados en R con contrapartida no acentuada(codificación UTF-8) (2)
Las respuestas a continuación son básicamente tomadas de otros lugares. La clave es obtener su unwanted_array
en el formato correcto. Puede quererlo como una list
:
unwanted_array = list( ''Š''=''S'', ''š''=''s'', ''Ž''=''Z'', ''ž''=''z'', ''À''=''A'', ''Á''=''A'', ''Â''=''A'', ''Ã''=''A'', ''Ä''=''A'', ''Å''=''A'', ''Æ''=''A'', ''Ç''=''C'', ''È''=''E'', ''É''=''E'',
''Ê''=''E'', ''Ë''=''E'', ''Ì''=''I'', ''Í''=''I'', ''Î''=''I'', ''Ï''=''I'', ''Ñ''=''N'', ''Ò''=''O'', ''Ó''=''O'', ''Ô''=''O'', ''Õ''=''O'', ''Ö''=''O'', ''Ø''=''O'', ''Ù''=''U'',
''Ú''=''U'', ''Û''=''U'', ''Ü''=''U'', ''Ý''=''Y'', ''Þ''=''B'', ''ß''=''Ss'', ''à''=''a'', ''á''=''a'', ''â''=''a'', ''ã''=''a'', ''ä''=''a'', ''å''=''a'', ''æ''=''a'', ''ç''=''c'',
''è''=''e'', ''é''=''e'', ''ê''=''e'', ''ë''=''e'', ''ì''=''i'', ''í''=''i'', ''î''=''i'', ''ï''=''i'', ''ð''=''o'', ''ñ''=''n'', ''ò''=''o'', ''ó''=''o'', ''ô''=''o'', ''õ''=''o'',
''ö''=''o'', ''ø''=''o'', ''ù''=''u'', ''ú''=''u'', ''û''=''u'', ''ý''=''y'', ''ý''=''y'', ''þ''=''b'', ''ÿ''=''y'' )
Puedes hacerlo fácilmente con iconv
o chartr
:
> iconv(string, to=''ASCII//TRANSLIT'')
[1] "Holmer"
> chartr(paste(names(unwanted_array), collapse=''''),
paste(unwanted_array, collapse=''''),
string)
[1] "Holmer"
De lo contrario, tendrá que recorrer todos los reemplazos porque mapply
o similar no darían cuenta de los símbolos que ya fueron reemplazados por las operaciones anteriores de gsub
:
# the loop:
out <- string
for(i in seq_along(unwanted_array))
out <- gsub(names(unwanted_array)[i],unwanted_array[i],out)
El resultado:
> out
[1] "Holmer"
Esta pregunta ya tiene una respuesta aquí:
- Reemplaza múltiples letras con acentos con gsub 11 respuestas
Tengo algunas cadenas en R en codificación UTF-8 que contienen acentos. Ej .: string="Hølmer"
o string="Elizalde-González"
¿Hay alguna función agradable en R para reemplazar los caracteres acentuados en estas cadenas por su contraparte sin acento? He visto algunas soluciones en PHP here , pero ¿cómo hago esto en R?
Ej. El código PHP
$unwanted_array = array( ''Š''=>''S'', ''š''=>''s'', ''Ž''=>''Z'', ''ž''=>''z'', ''À''=>''A'', ''Á''=>''A'', ''Â''=>''A'', ''Ã''=>''A'', ''Ä''=>''A'', ''Å''=>''A'', ''Æ''=>''A'', ''Ç''=>''C'', ''È''=>''E'', ''É''=>''E'',
''Ê''=>''E'', ''Ë''=>''E'', ''Ì''=>''I'', ''Í''=>''I'', ''Î''=>''I'', ''Ï''=>''I'', ''Ñ''=>''N'', ''Ò''=>''O'', ''Ó''=>''O'', ''Ô''=>''O'', ''Õ''=>''O'', ''Ö''=>''O'', ''Ø''=>''O'', ''Ù''=>''U'',
''Ú''=>''U'', ''Û''=>''U'', ''Ü''=>''U'', ''Ý''=>''Y'', ''Þ''=>''B'', ''ß''=>''Ss'', ''à''=>''a'', ''á''=>''a'', ''â''=>''a'', ''ã''=>''a'', ''ä''=>''a'', ''å''=>''a'', ''æ''=>''a'', ''ç''=>''c'',
''è''=>''e'', ''é''=>''e'', ''ê''=>''e'', ''ë''=>''e'', ''ì''=>''i'', ''í''=>''i'', ''î''=>''i'', ''ï''=>''i'', ''ð''=>''o'', ''ñ''=>''n'', ''ò''=>''o'', ''ó''=>''o'', ''ô''=>''o'', ''õ''=>''o'',
''ö''=>''o'', ''ø''=>''o'', ''ù''=>''u'', ''ú''=>''u'', ''û''=>''u'', ''ý''=>''y'', ''ý''=>''y'', ''þ''=>''b'', ''ÿ''=>''y'' );
$str = strtr( $str, $unwanted_array );
Parecía bastante agradable, pero ¿cómo haría esto en R?
Otra opción es usar el paquete gsubfn
:
library(gsubfn)
string="Hølmer"
gsubfn(paste(names(unwanted_array),collapse=''|''), unwanted_array,string)
[1] "Holmer"