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
gsubgsubreemplaza todas las instancias de una cadena ( fixed = TRUE) o expresión regular ( fixed = FALSEel 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 = TRUEno 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. \ses una expresión regular independiente del lenguaje que hace lo mismo.
stringrenfoque: str_replace_allystr_trimstringrproporciona 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(), "")
stringrtambién tiene una str_trimfunció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
stringienfoque: stri_replace_all_charclassystri_trimstringiestá 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.
stringiTambié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_charclassde una nueva línea delstringipaquete.fuente
stringipaquete está en CRAN ahora, ¡disfrútalo! :)stringidurante 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 paquetestringrde tidyverse hace la magia!fuente
str_squishNo 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
mutateomutate_at.fuente
Desde la biblioteca stringr puedes probar esto:
Eliminar relleno en blanco
biblioteca (stringr)
fuente