¿Cómo eliminar todos los caracteres especiales de la cadena en R y reemplazarlos con espacios?
Algunos caracteres especiales para eliminar son: ~!@#$%^&*(){}_+:"<>?,./;'[]-=
Lo intenté regex
con el [:punct:]
patrón, pero solo elimina los signos de puntuación.
Pregunta 2: ¿Y cómo eliminar caracteres de idiomas extranjeros como â í ü Â á ą ę ś ć
:?
Respuesta: Úselo [^[:alnum:]]
para eliminar ~!@#$%^&*(){}_+:"<>?,./;'[]-=
y use [^a-zA-Z0-9]
para eliminar también â í ü Â á ą ę ś ć
en funciones regex
o regexpr
.
sub
ogsub
funciones.Respuestas:
Debe utilizar expresiones regulares para identificar los caracteres no deseados. Para obtener el código más fácil de leer, desea el
str_replace_all
delstringr
paquete, aunquegsub
desde la base R funciona igual de bien.La expresión regular exacta depende de lo que intente hacer. Puede eliminar los caracteres específicos que proporcionó en la pregunta, pero es mucho más fácil eliminar todos los caracteres de puntuación.
(El equivalente de R base es
gsub("[[:punct:]]", " ", x)
.)Una alternativa es intercambiar todos los caracteres no alfanuméricos.
Tenga en cuenta que la definición de lo que constituye una letra, un número o un signo de puntuación varía ligeramente según su ubicación, por lo que es posible que deba experimentar un poco para obtener exactamente lo que desea.
fuente
" "
con, de lo""
contrario, tendrá un espacio en blanco vacío en la cadena.â í ü Â á
:??regex
y?regexpr
.[^[:alnum:]]
con[^a-zA-Z0-9]
o posiblemente\\W
.En lugar de usar expresiones regulares para eliminar esos caracteres "locos", simplemente conviértalos a ASCII, lo que eliminará los acentos, pero conservará las letras.
lo que resulta en
fuente
iconv(astr, from="UFT-8", to="ASCII//TRANSLIT")
, de lo contrario, con caracteres franceses,ç
se vuelve un poco divertido.Convierta los caracteres especiales en apóstrofo,
A continuación, codifique para eliminar el apóstrofo adicional '' '
Utilice la
gsub(..)
función para reemplazar el carácter especial con apóstrofofuente