Pegar cadenas sin espacios en R
Este artículo explorará tres formas de eliminar espacios al fusionar (concatenar) cadenas.
Eliminar espacios al fusionar cadenas en R
Usaremos cadenas individuales, vectores de cadenas y un marco de datos con cadenas para las demostraciones.
Código de ejemplo:
# The individual strings.
s1 = "The sky"
s2 = "is blue."
s1a = " The sky "
s2a = " is blue. "
# Columns for the data frame.
C1 = c("The sky", " The earth ")
C2 = c("is blue.", " is green. ")
# The data frame.
dtfr = data.frame(Col1=C1, Col2=C2)
Funciones base R
Las siguientes funciones básicas de R se pueden usar para eliminar espacios de cadenas.
Utilice la función pegar()
con sep=""
para eliminar espacios
Al pegar cadenas, R agrega un espacio en el medio. Podemos usar sep=""
para eliminar el espacio añadido.
En el contexto de vectores de la misma longitud, pegar()
fusiona los elementos correspondientes de los vectores. Para fusionar todos los elementos de salida en una cadena larga sin espacios adicionales, podemos usar collapse=""
.
Para fusionar columnas de marcos de datos sin espacios añadidos, utilice sep=""
.
Código de ejemplo:
# MERGE WITH paste()
# Default: adds space.
paste(s1, s2)
# Remove added space.
paste(s1, s2, sep="")
# Does not remove existing spaces.
# Variables s1a and s2a have space characters at the beginning and end.
paste(s1a, s2a, sep="")
# Element-wise merging of vectors.
# No spaces are added in between.
paste(C1, C2, sep="")
# After element-wise merging, we can
# collapse all the elements of the result into a single string.
paste(C1, C2, sep="", collapse="")
# Merge columns of a data frame.
# No spaces are added in between.
dtfr$Mr = paste(dtfr$Col1, dtfr$Col2, sep="")
dtfr
Producción :
> # Default: adds space.
> paste(s1, s2)
[1] "The sky is blue."
> # Remove added space.
> paste(s1, s2, sep="")
[1] "The skyis blue."
> # Does not remove existing spaces.
> # Variables s1a and s2a have space characters at the beginning and end.
> paste(s1a, s2a, sep="")
[1] " The sky is blue. "
> # Element-wise merging of vectors.
> # No spaces are added in between.
> paste(C1, C2, sep="")
[1] "The skyis blue." " The earth is green. "
> # After element-wise merging, we can
> # collapse all the elements of the result into a single string.
> paste(C1, C2, sep="", collapse="")
[1] "The skyis blue. The earth is green. "
> # Merge columns of a data frame.
> # No spaces are added in between.
> dtfr$Mr = paste(dtfr$Col1, dtfr$Col2, sep="")
> dtfr
Col1 Col2 Mr
1 The sky is blue. The skyis blue.
2 The earth is green. The earth is green.
Utilice las funciones trimws()
y paste()
para eliminar espacios
La función trimws()
puede eliminar espacios en blanco
de la izquierda, derecha o ambos lados de una cadena. Además de los caracteres de espacio, otros caracteres considerados espacios en blanco
incluyen el tabulador horizontal, el retorno de carro y los caracteres de nueva línea.
De forma predeterminada, esta función elimina todos los espacios en blanco de ambos lados de una cadena.
Sintaxis:
trimws(string, which="side", whitespace="[ \t\r\n]")
# where `side` can be `left` or `right` or `both`
Código de ejemplo:
# trimws() removes spaces from the left, right or both
trimws(s2a, which="left", whitespace=" ")
trimws(s2a, which="right", whitespace=" ")
trimws(s2a, which="both", whitespace=" ")
# By default, it removes all whitespace from both sides.
s2a
trimws(s2a)
# Remove leading, trailing and added spaces when merging vectors.
paste(trimws(C1), trimws(C2), sep="")
# Remove leading, trailing and added spaces when combining columns of a data frame.
dtfr$Mr2 = paste(trimws(dtfr$Col1), trimws(dtfr$Col2), sep="")
dtfr
Producción :
> # trimws() removes spaces from the left, right or both
> trimws(s2a, which="left", whitespace=" ")
[1] "is blue. "
> trimws(s2a, which="right", whitespace=" ")
[1] " is blue."
> trimws(s2a, which="both", whitespace=" ")
[1] "is blue."
> # By default, it removes all whitespace from both sides.
> s2a
[1] " is blue. "
> trimws(s2a)
[1] "is blue."
> # Remove leading, trailing and added spaces when merging vectors.
> paste(trimws(C1), trimws(C2), sep="")
[1] "The skyis blue." "The earthis green."
> # Remove leading, trailing and added spaces when combining columns of a data frame.
> dtfr$Mr2 = paste(trimws(dtfr$Col1), trimws(dtfr$Col2), sep="")
> dtfr
Col1 Col2 Mr Mr2
1 The sky is blue. The skyis blue. The skyis blue.
2 The earth is green. The earth is green. The earthis green.
Primero usamos trimws()
para eliminar espacios de ambos lados de las cadenas antes de fusionarlos usando la función pegar()
.
Utilice las funciones gsub()
y paste()
para eliminar espacios
Sintaxis:
gsub(buscar_para, reemplazar_con, cadena)
Código de ejemplo:
# For vectors: merge strings and remove all spaces from the result.
gsub(" ", "", paste(C1, C2))
# For data frame: merge string columns of a data frame and remove all spaces.
dtfr$Mr3 = gsub(" ", "", paste(dtfr$Col1, dtfr$Col2))
dtfr
Producción :
> # For vectors: merge strings and remove all spaces from the result.
> gsub(" ", "", paste(C1, C2))
[1] "Theskyisblue." "Theearthisgreen."
> # For data frame: merge string columns of a data frame and remove all spaces.
> dtfr$Mr3 = gsub(" ", "", paste(dtfr$Col1, dtfr$Col2))
> dtfr
Col1 Col2 Mr Mr2 Mr3
1 The sky is blue. The skyis blue. The skyis blue. Theskyisblue.
2 The earth is green. The earth is green. The earthis green. Theearthisgreen.
Primero fusionamos las cadenas usando paste()
y luego eliminamos todos los espacios usando gsub()
.
Utilice el paquete stringr
y la función paste()
para eliminar espacios
Sintaxis:
str_replace_all(string, search_for, replace_with)
Código de ejemplo:
# Install the stringr package.
# install.packages("stringr")
# Load the stringr package.
library(stringr)
# With vectors.
str_replace_all(paste(C1, C2), " ", "")
# With columns of a data frame.
# We will first recreate the dataframe to improve readability.
dtfr = data.frame(Col1=C1, Col2=C2)
# Use the str_replace_all() function.
dtfr$StrRplAll = str_replace_all(paste(dtfr$Col1, dtfr$Col2), " ", "")
dtfr
Producción :
> # Load the stringr package.
> library(stringr)
> # With vectors.
> str_replace_all(paste(C1, C2), " ", "")
[1] "Theskyisblue." "Theearthisgreen."
> # With columns of a data frame.
> # We will first recreate the dataframe to improve readability.
> dtfr = data.frame(Col1=C1, Col2=C2)
> # Use the str_replace_all() function.
> dtfr$StrRplAll = str_replace_all(paste(dtfr$Col1, dtfr$Col2), " ", "")
> dtfr
Col1 Col2 StrRplAll
1 The sky is blue. Theskyisblue.
2 The earth is green. Theearthisgreen.
El paquete stringr
del tidyverse
de R está construido sobre el paquete stringi
. Este paquete proporciona la función str_replace_all()
, que es similar a la función gsub()
.
Conclusión
Este artículo mostró cómo eliminar lo siguiente:
- Se agregan espacios al fusionar cadenas con la función
pegar()
. - Espacios iniciales y finales de cadenas.
- Todos los espacios de una cadena.
Las funciones se pueden combinar/anidar dependiendo de la necesidad de obtener el resultado deseado.