Pegar cadenas sin espacios en R

Jesse John 21 junio 2023
  1. Eliminar espacios al fusionar cadenas en R
  2. Funciones base R
  3. Conclusión
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.

Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.

Artículo relacionado - R String