Así " xx yy 11 22 33 "
será "xxyy112233"
. ¿Cómo puedo conseguir esto?
En general, queremos una solución vectorizada, así que aquí hay un mejor ejemplo de prueba:
whitespace <- " \t\n\r\v\f" # space, tab, newline,
# carriage return, vertical tab, form feed
x <- c(
" x y ", # spaces before, after and in between
" \u2190 \u2192 ", # contains unicode chars
paste0( # varied whitespace
whitespace,
"x",
whitespace,
"y",
whitespace,
collapse = ""
),
NA # missing
)
## [1] " x y "
## [2] " ← → "
## [3] " \t\n\r\v\fx \t\n\r\v\fy \t\n\r\v\f"
## [4] NA
gsub
gsub
reemplaza todas las instancias de una cadena ( fixed = TRUE
) o expresión regular ( fixed = FALSE
el valor predeterminado) con otra cadena. Para eliminar todos los espacios, use:
gsub(" ", "", x, fixed = TRUE)
## [1] "xy" "←→"
## [3] "\t\n\r\v\fx\t\n\r\v\fy\t\n\r\v\f" NA
Como DWin señaló, en este caso fixed = TRUE
no es necesario, pero proporciona un rendimiento ligeramente mejor ya que hacer coincidir una cadena fija es más rápido que hacer coincidir una expresión regular.
Si desea eliminar todos los tipos de espacios en blanco, use:
gsub("[[:space:]]", "", x) # note the double square brackets
## [1] "xy" "←→" "xy" NA
gsub("\\s", "", x) # same; note the double backslash
library(regex)
gsub(space(), "", x) # same
"[:space:]"
es un grupo de expresión regular específico de R que coincide con todos los caracteres de espacio. \s
es una expresión regular independiente del lenguaje que hace lo mismo.
stringr
enfoque: str_replace_all
ystr_trim
stringr
proporciona más envoltorios legibles para los humanos alrededor de las funciones básicas de R (aunque a partir de diciembre de 2014, la versión de desarrollo tiene una rama incorporada stringi
, mencionada a continuación). Los equivalentes de los comandos anteriores, usando [ str_replace_all][3]
, son:
library(stringr)
str_replace_all(x, fixed(" "), "")
str_replace_all(x, space(), "")
stringr
también tiene una str_trim
función que elimina solo los espacios en blanco iniciales y finales.
str_trim(x)
## [1] "x y" "← →" "x \t\n\r\v\fy" NA
str_trim(x, "left")
## [1] "x y " "← → "
## [3] "x \t\n\r\v\fy \t\n\r\v\f" NA
str_trim(x, "right")
## [1] " x y" " ← →"
## [3] " \t\n\r\v\fx \t\n\r\v\fy" NA
stringi
enfoque: stri_replace_all_charclass
ystri_trim
stringi
está construido sobre la biblioteca de la UCI independiente de la plataforma y tiene un amplio conjunto de funciones de manipulación de cadenas. Los equivalentes de lo anterior son:
library(stringi)
stri_replace_all_fixed(x, " ", "")
stri_replace_all_charclass(x, "\\p{WHITE_SPACE}", "")
Aquí "\\p{WHITE_SPACE}"
hay una sintaxis alternativa para el conjunto de puntos de código Unicode considerados espacios en blanco, equivalentes a "[[:space:]]"
, "\\s"
y space()
. Para reemplazos de expresiones regulares más complejas, también existe stri_replace_all_regex
.
stringi
También tiene funciones de recorte .
stri_trim(x)
stri_trim_both(x) # same
stri_trim(x, "left")
stri_trim_left(x) # same
stri_trim(x, "right")
stri_trim_right(x) # same
"[[:space:]]"
y"\\s"
?Acabo de enterarme del paquete "stringr" para eliminar el espacio en blanco desde el principio y el final de una cadena con str_trim (, side = "both") pero también tiene una función de reemplazo para que:
fuente
Tenga en cuenta que las almas escritas anteriormente eliminan solo el espacio. Si también desea eliminar la pestaña o el uso
stri_replace_all_charclass
de una nueva línea delstringi
paquete.fuente
stringi
paquete está en CRAN ahora, ¡disfrútalo! :)stringi
durante unos meses y haber visto / aprendido lo poderoso y eficiente que es, se ha convertido en mi paquete de referencia para operaciones con cadenas. Ustedes hicieron un trabajo increíble con eso.Se usa
[[:blank:]]
para unir cualquier tipo de caracteres de espacio en blanco horizontal.fuente
fuente
¡La función
str_squish()
del paquetestringr
de tidyverse hace la magia!fuente
str_squish
No elimina todos los espacios. Simplemente recorta y sustituye múltiples espacios por uno.De esta manera, puede eliminar todos los espacios de todas las variables de caracteres en su marco de datos. Si prefiere elegir solo algunas de las variables, use
mutate
omutate_at
.fuente
Desde la biblioteca stringr puedes probar esto:
Eliminar relleno en blanco
biblioteca (stringr)
fuente