Después de investigar en diversos repositorios y sitios webs finalmente hallamos la resolución que te compartiremos pronto.
Solución:
El carácter con el código ASCII 160 se llama “espacio que no se rompe”. Se puede leer sobre él en Wikipedia:
https://en.wikipedia.org/wiki/Non-breaking_space
trimws()
la función no la incluye en la lista de caracteres que son eliminados por la función:
x <- intToUtf8(c(160,49,49,57,57,46,48,48))
x
#[1] " 1199.00"
trimws(x)
#[1] " 1199.00"
Una forma de deshacerse de él es usando str_trim()
función de stringr Biblioteca:
library(stringr)
y <- str_trim(x)
trimws(y)
[1] "1199.00"
Otra forma aplicando iconv()
función primero:
y <- iconv(x, from = 'UTF-8', to = 'ASCII//TRANSLIT')
trimws(y)
#[1] "1199.00"
ACTUALIZAR
Para explicar por qué trimws () no elimina el carácter "invisible" descrito anteriormente y stringr: str_trim () sí.
Esto es lo que leemos de trimws()
ayuda:
Para la portabilidad, se toma 'espacio en blanco' como la clase de carácter [
trn] (espacio, tabulación horizontal, salto de línea, retorno de carro)
Para stringr:str_trim()
El tema de ayuda en sí no especifica lo que se considera un "espacio en blanco", pero si consulta la ayuda para stri_trim_both
que es llamado por str_trim()
ya verás: stri_trim_both(str, pattern = "\PWspace")
Básicamente, en este caso, se utiliza una gama más amplia de caracteres que se consideran espacios en blanco.
ACTUALIZACIÓN 2
Como señaló @ H1, la versión 3.6.0 proporciona una opción para especificar qué considerar un carácter de espacio en blanco:
Internamente, 'sub (re, "", *, perl = TRUE)', es decir, se utilizan expresiones regulares de la biblioteca PCRE. Para la portabilidad, el 'espacio en blanco' predeterminado es la clase de carácter '[ trn]'(espacio, tabulación horizontal, retorno de carro, nueva línea). Alternativamente, '[hv]'es una buena generalización (PCRE) para que coincida con todos los caracteres de espacio en blanco horizontales y verticales Unicode, consulte también https://www.pcre.org>.
Entonces, si está utilizando la versión 3.6.0 o posterior, simplemente puede hacer:
> trimws(x,whitespace = "[\h\v]")
#[1] "1199.00"
Desde la versión R 3.6.0 trimws()
tiene un argumento que le permite definir lo que se considera espacio en blanco, que en este caso es un espacio sin interrupciones.
trimws(x, whitespace = "u00A0|\s")
[1] "1199.00"
Te invitamos a ayudar nuestro ensayo escribiendo un comentario o dejando una puntuación te damos las gracias.