Eliminar el primer carácter de una cadena en R

Jesse John 30 enero 2023
  1. Técnicas para eliminar el primer carácter de una cadena
  2. Usa la función substr()
  3. Usar la función sub() con una expresión regular
  4. Usa el paquete stringr
  5. Obteniendo ayuda
  6. Conclusión
Eliminar el primer carácter de una cadena en R

R es bien conocido como un entorno de programación para el análisis estadístico. Significa analizar números, pero las estadísticas no se tratan solo de números. Es posible que necesitemos contar las instancias de una palabra o eliminar el primer carácter de una cadena.

R proporciona muchas funciones para analizar y manipular cadenas de caracteres. Si bien parte de la funcionalidad está integrada en R base, hay más disponible a través de paquetes.

Este artículo se centra en tres técnicas para eliminar el primer carácter de una cadena.

Antes de sumergirse en las técnicas, es importante tener en cuenta estos dos puntos.

  1. En R, la indexación de elementos de vectores comienza con 1, no con 0. A diferencia de la mayoría de los lenguajes de programación, es como la indexación de vectores y matrices en matemáticas, y el índice del último rango se incluye en el rango.
  2. Todos los códigos de ejemplo de este artículo utilizarán valores válidos. Ayudará a mantener el enfoque del artículo en el concepto principal explicado.

Técnicas para eliminar el primer carácter de una cadena

Exploraremos tres técnicas para eliminar el primer carácter de una cadena o un vector de cadenas.

  1. Función base R substr().
  2. Función base R sub() con una expresión regular.
  3. La función str_sub() del paquete stringr.

Demostraremos cada técnica para facilitar la comprensión tanto con una sola cadena como con un vector de cadenas.

Usaremos el diccionario de palabras como nuestra cadena de ejemplo. Usaremos la función de combinación de R, c(), para crear un vector de tres cadenas.

Las palabras que conformarán nuestro vector son diccionario, diccionario de sinónimos y diario. El siguiente código crea el vector.

Código de ejemplo:

myVector = c('dictionary', 'thesaurus', 'diary')

Producción :

> myVector = c('dictionary', 'thesaurus', 'diary')

Usa la función substr()

La primera técnica demostrará la función substr() de base R para eliminar el primer carácter de una cadena. Los puntos principales sobre el uso de esta función son los siguientes.

  • La función substr() extrae una parte de una cadena.
  • Se necesitan tres argumentos.
  • El primer argumento es la cadena de texto. En la terminología de R, una cadena es un vector de caracteres y cada uno de sus caracteres tiene un índice de posición.
  • El segundo argumento es el índice del carácter para iniciar la subcadena. El índice del primer carácter es 1.
  • El tercer argumento es el vector de índice del carácter para finalizar la subcadena. El índice del último carácter es el mismo que la longitud de la cadena.

El siguiente código de ejemplo elimina el primer carácter de la cadena porque comenzamos la subcadena en el índice dos y finalizamos la subcadena en la posición de índice del último carácter.

Código de ejemplo:

substr('dictionary', 2,10)

Producción :

> substr('dictionary', 2,10)
[1] "ictionary"

En la mayoría de los casos prácticos, no trabajaremos con una cadena individual. Tendremos un vector de cadenas y debemos eliminar el primer carácter de cada cadena en el vector.

Para demostrar la función substr() en un vector de cadenas, introduciremos una nueva función, nchar(), desde la base R.

La función nchar() nos da el número de caracteres de cada elemento de un vector de cadenas. ¿Por qué necesitamos esta función? Para extraer una subcadena usando substr(), necesitamos pasar el índice del carácter en el que detener la subcadena.

En nuestro ejemplo anterior, solo queríamos eliminar el primer carácter; usamos la posición de índice del último carácter de la cadena para este propósito. En nuestro ejemplo de una sola palabra, dimos un valor numérico específico para la posición del último carácter.

Cuando tenemos un vector de cadenas de diferentes longitudes, necesitamos una forma general de especificar la posición de índice del último carácter de cada cadena. La función nchar() nos permite hacer eso.

Por ejemplo, nchar('diccionario') nos da 10; es el número de caracteres en la cadena diccionario. Y dado que la indexación comienza en 1 en R, la posición de índice del último carácter de esta cadena es 10.

Seguimos usando la misma función substr() para procesar un vector de cadenas. Sin embargo, tenga en cuenta dos diferencias importantes en este caso.

  • El primer argumento de substr() ahora es un vector de cadenas. (Es un vector de vectores de caracteres).
  • Como substr() se aplica a cada elemento del vector, nchar() pasa el número de caracteres en ese elemento. A diferencia de los lenguajes de programación de procedimientos, no es necesario escribir un bucle para iterar a través de cada elemento del vector.

El siguiente código elimina el primer carácter de cada elemento del vector.

Código de ejemplo:

substr(myVector, 2, nchar(myVector))

Producción :

> substr(myVector, 2, nchar(myVector))
[1] "ictionary" "hesaurus"  "iary"

Usar la función sub() con una expresión regular

Las expresiones regulares se refieren a un sistema de coincidencia de patrones de cadenas muy elaborado. Es una potente herramienta para identificar patrones en cadenas.

Una presentación general sobre expresiones regulares está más allá del alcance de este artículo; se han escrito varios libros sobre el tema. No obstante, dado que necesitamos usar una expresión regular con la función sub(), solo se presentarán las características esenciales.

  • El punto, o punto, coincide con cualquier carácter, una sola instancia de cualquier carácter.
  • El signo de intercalación, ^ al comienzo, coincide con un patrón al comienzo de una cadena.

Usando estos dos caracteres, hacemos los siguientes dos patrones de expresión regular:

  1. El patrón (.) coincide con cualquier carácter.
  2. El patrón ^ coincide con cualquier carácter al principio de la cadena.

La función sub() de base R es una función de coincidencia y reemplazo de patrones en la que usaremos una expresión regular para eliminar el primer carácter de una cadena.

Los puntos principales relacionados con el uso de esta función son los siguientes:

  1. La función tiene la forma sub('searchpattern', 'replacement', 'string').
  2. El primer argumento es el patrón que buscamos.
  3. La segunda es la cadena que reemplaza la primera instancia del patrón de búsqueda una vez que se encuentra.
  4. La tercera es la cadena en la que buscamos el patrón y reemplazamos el patrón.
  5. De forma predeterminada, esta función distingue entre mayúsculas y minúsculas.
  6. Esta función coincide y reemplaza solo la primera instancia del patrón de búsqueda.

El siguiente código ilustra la función sub() con el punto como expresión regular (el patrón de búsqueda). El primer carácter, que es la primera coincidencia, se reemplaza con A.

Código de ejemplo:

sub('.','A','dictionary')

Producción :

> sub('.','A','dictionary')
[1] "Aictionary"

Nuestra tarea principal es eliminar el primer carácter de una cadena en lugar de reemplazarlo.

Para eliminar el primer carácter de la cadena usando esta técnica, necesitamos usar una cadena vacía, '', como segundo argumento. Mira el código.

Código de ejemplo:

sub('.','','dictionary')

Producción :

> sub('.','','dictionary')
[1] "ictionary"

El siguiente ejemplo demuestra la función sub() con el vector de cadenas que ya hemos creado. Este código elimina el primer carácter de cada elemento del vector.

Código de ejemplo:

sub('.','', myVector)

Producción :

> sub('.','', myVector)
[1] "ictionary" "hesaurus"  "iary"

Antes de pasar a la siguiente técnica, es necesario hacer una advertencia. Base R tiene otra función de coincidencia y reemplazo de patrones, gsub().

gsub() coincide y reemplaza todas las instancias del patrón de búsqueda, a diferencia de la función sub(), que coincide y reemplaza la primera instancia del patrón de búsqueda. Es posible que haya notado que, si bien esta sección presenta dos expresiones regulares, el código de ejemplo solo usó una.

La razón es que con la función sub(), solo el punto es suficiente para hacer coincidir cualquier primer carácter porque solo coincide con la primera instancia del patrón de búsqueda. gsub() se comporta de manera diferente; el punto coincide con todos los caracteres.

Código de ejemplo:

gsub('.','A','dictionary')

Producción :

> gsub('.','A','dictionary')
[1] "AAAAAAAAAA"

Encontramos que gsub() ha reemplazado cada carácter con la cadena de reemplazo, 'A' en este caso. Para forzar a gsub() a que solo coincida con el patrón de búsqueda al comienzo de la cadena, debemos anteponer el punto con el símbolo de intercalación, como en el siguiente ejemplo.

Código de ejemplo:

gsub('^.','A','dictionary')

Producción :

> gsub('^.','A','dictionary')
[1] "Aictionary"

Para la tarea de eliminar solo el primer carácter de una cadena o un vector de cadenas, la función sub() es una opción más simple en comparación con su contraparte cercana, gsub().

Usa el paquete stringr

El paquete stringr proporciona la función str_sub() para eliminar el primer carácter de una cadena. A diferencia de la función base R substr(), no necesitamos otra función como nchar() para obtener la posición de índice del último carácter cuando usamos la función str_sub() en un vector de cadenas.

Sin embargo, dado que el paquete stringr proporciona esta función, los usuarios primero deberán instalar ese paquete (tarea única) y cargarlo antes de usarlo (en cada sesión).

Los puntos principales relacionados con el uso de la función str_sub() son los siguientes:

  1. La función toma tres argumentos.
  2. El primer argumento es la cadena o vector de cadenas.
  3. El segundo argumento es la posición del índice desde donde comienza la subcadena. Para eliminar el primer carácter, debemos comenzar en la posición de índice 2.
  4. El tercer argumento es la posición de índice en la que terminará la subcadena. Para mantener todos los caracteres hasta el final de la cadena, debemos darle la posición de índice del último carácter, que es -1. Es lo que hace que esta función sea particularmente útil.

Al usar la función substr() de base R, calculamos la posición de índice del último carácter de cada cadena usando la función nchar(). Sin embargo, la función str_sub() especifica posiciones de índice desde el final de una cadena utilizando enteros negativos.

La posición de índice del último carácter es -1, la posición de índice del penúltimo carácter es -2, y así sucesivamente. Esta característica nos permite especificar nuestra subcadena usando solo esta función.

Por ejemplo, str_sub('thesaurus',2,-1) comienza a extraer (mantener) la subcadena desde la posición de índice 2 de la cadena original, es decir, desde la letra h, y mantiene todos los caracteres hasta la posición de índice -1 de la cadena original, es decir, el último carácter, s. Devuelve así la cadena hesaurus.

Este código ilustra el uso de la función con el diccionario de una sola cadena y el vector de cadenas que creamos.

Código de ejemplo:

# Install the stringr package using the install.packages() function.
# This is a one-time task.
install.packages("stringr")

# Load the stringr package in each R session using the library() function.
library(stringr)

# Use of the str_sub() function on a string -- a character vector.
str_sub('dictionary', 2,-1)

# Use of the str_sub() function on a vector of strings.
str_sub(myVector, 2,-1) # Removes the first character.

Salida (después de instalar y cargar el paquete):

> # Use of the str_sub() function on a string -- a character vector.
> str_sub('dictionary', 2,-1)
[1] "ictionary"
>
> # Use of the str_sub() function on a vector of strings.
> str_sub(myVector, 2,-1) # Removes the first character.
[1] "ictionary" "hesaurus"  "iary"

Obteniendo ayuda

RStudio facilita obtener más información sobre cualquier función o comando.

Haga clic en Help > R Help para que aparezca el panel de ayuda en la ventana Files / Plots / Packages / Help / Viewer en la parte inferior derecha de la interfaz de RStudio.

Busque cualquiera de las funciones mencionadas en este artículo utilizando el cuadro de búsqueda en la parte superior de esta página. No escriba los paréntesis después del nombre de la función en el cuadro de búsqueda.

Haciendo clic en Help > Search R Help se coloca el cursor en el cuadro de búsqueda de esta página.

Conclusión

Hay varias técnicas disponibles para eliminar el primer carácter de una cadena. La función base R substr() está fácilmente disponible pero necesita otra función base R, la función nchar(), para un vector de cadenas.

La función sub() es poderosa, pero toda su potencia y complejidad no requieren la simple tarea de eliminar el primer carácter de la cadena. La función str_sub() es conveniente, pero necesita la instalación y carga del paquete stringr.

Cada una de estas técnicas ofrece el resultado esperado. La elección es del usuario.

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