La guía o código que verás en este artículo es la resolución más eficiente y válida que hallamos a esta inquietud o dilema.
Solución:
Debe usar expresiones regulares para identificar los caracteres no deseados. Para obtener el código más fácil de leer, desea que el str_replace_all
desde el stringr
paquete, sin embargo gsub
desde la base R funciona igual de bien.
La expresión regular exacta depende de lo que esté tratando de hacer. Podría eliminar los caracteres específicos que proporcionó en la pregunta, pero es mucho más fácil eliminar todos los caracteres de puntuación.
x <- "[email protected]#$%^&*()_+:"<>?,./;'[]-=" #or whatever
str_replace_all(x, "[[:punct:]]", " ")
(El equivalente base R es gsub("[[:punct:]]", " ", x)
.)
Una alternativa es intercambiar todos los caracteres no alfanuméricos.
str_replace_all(x, "[^[:alnum:]]", " ")
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.
En lugar de usar expresiones regulares para eliminar esos caracteres “locos”, simplemente conviértalos a ASCII, lo que eliminará los acentos, pero mantendrá las letras.
astr <- "Ábcdêãçoàúü"
iconv(astr, from = 'UTF-8', to = 'ASCII//TRANSLIT')
lo que resulta en
[1] "Abcdeacoauu"
Convierta los caracteres especiales en apóstrofe,
Data <- gsub("[^0-9A-Za-z///' ]","'" , Data ,ignore.case = TRUE)
Codifíquelo a continuación para eliminar el apóstrofo extra '''
Data <- gsub("''","" , Data ,ignore.case = TRUE)
Usar gsub(..)
función para reemplazar el carácter especial con apóstrofe
Al final de la post puedes encontrar los informes de otros desarrolladores, tú incluso tienes la libertad de insertar el tuyo si te apetece.