Supprimer le premier caractère d'une chaîne dans R

Jesse John 30 janvier 2023
  1. Techniques pour supprimer le premier caractère d’une chaîne
  2. Utilisez la fonction substr()
  3. Utiliser la fonction sub() avec une expression régulière
  4. Utiliser le paquet stringr
  5. Obtenir de l’aide
  6. Conclusion
Supprimer le premier caractère d'une chaîne dans R

R est bien connu comme environnement de programmation pour l’analyse statistique. Cela signifie analyser des chiffres, mais les statistiques ne sont pas seulement des chiffres. Nous pouvons avoir besoin de compter les instances d’un mot, ou nous pouvons avoir besoin de supprimer le premier caractère d’une chaîne.

R fournit de nombreuses fonctions pour analyser et manipuler des chaînes de caractères. Bien que certaines fonctionnalités soient intégrées à base R, d’autres sont disponibles via des packages.

Cet article se concentre sur trois techniques pour supprimer le premier caractère d’une chaîne.

Avant de plonger dans les techniques, il est important de noter ces deux points.

  1. Dans R, l’indexation des éléments des vecteurs commence par 1, et non par 0. Contrairement à la plupart des langages de programmation, c’est comme l’indexation des vecteurs et des matrices en mathématiques, et le dernier indice de plage est inclus dans la plage.
  2. Tous les exemples de codes de cet article utiliseront des valeurs valides. Cela aidera à garder l’accent de l’article sur le concept principal expliqué.

Techniques pour supprimer le premier caractère d’une chaîne

Nous allons explorer trois techniques pour supprimer le premier caractère d’une chaîne ou d’un vecteur de chaînes.

  1. Fonction substr() de base R.
  2. Fonction sub() de base R avec une expression régulière.
  3. La fonction str_sub() du package stringr.

Nous démontrerons chaque technique pour faciliter la compréhension avec une seule chaîne et un vecteur de chaînes.

Nous utiliserons le mot dictionnaire comme chaîne d’exemple. Nous utiliserons la fonction de combinaison de R, c(), pour créer un vecteur de trois chaînes.

Les mots qui composeront notre vecteur sont dictionnaire, thésaurus et journal. Le code suivant crée le vecteur.

Exemple de code :

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

Production :

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

Utilisez la fonction substr()

La première technique démontrera la fonction substr() de base R pour supprimer le premier caractère d’une chaîne. Les principaux points concernant l’utilisation de cette fonction sont les suivants.

  • La fonction substr() extrait une partie d’une chaîne.
  • Il faut trois arguments.
  • Le premier argument est la chaîne de texte. Dans la terminologie R, une chaîne est un vecteur de caractères et chacun de ses caractères a un index de position.
  • Le deuxième argument est l’index du caractère pour commencer la sous-chaîne. L’index du premier caractère est 1.
  • Le troisième argument est le vecteur d’index du caractère pour terminer la sous-chaîne. L’index du dernier caractère est identique à la longueur de la chaîne.

L’exemple de code ci-dessous supprime le premier caractère de la chaîne car nous commençons la sous-chaîne à l’index deux et terminons la sous-chaîne à la position d’index du dernier caractère.

Exemple de code :

substr('dictionary', 2,10)

Production :

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

Dans la plupart des cas pratiques, nous ne travaillerons pas avec une chaîne individuelle. Nous aurons un vecteur de chaînes et nous devons supprimer le premier caractère de chaque chaîne du vecteur.

Pour démontrer la fonction substr() sur un vecteur de chaînes, nous allons introduire une nouvelle fonction, nchar(), de base R.

La fonction nchar() nous donne le nombre de caractères de chaque élément d’un vecteur de chaînes. Pourquoi avons-nous besoin de cette fonction ? Pour extraire une sous-chaîne à l’aide de substr(), nous devons passer l’index du caractère auquel arrêter la sous-chaîne.

Dans notre exemple précédent, nous voulions uniquement supprimer le premier caractère ; nous avons utilisé la position d’index du dernier caractère de la chaîne à cette fin. Dans notre exemple d’un seul mot, nous avons donné une valeur numérique spécifique pour la position du dernier caractère.

Lorsque nous avons un vecteur de chaînes de différentes longueurs, nous avons besoin d’un moyen général pour spécifier la position d’index du dernier caractère de chaque chaîne. La fonction nchar() nous permet de faire cela.

Par exemple, nchar('dictionnaire') nous donne 10; c’est le nombre de caractères de la chaîne dictionnaire. Et puisque l’indexation commence à 1 dans R, la position d’index du dernier caractère de cette chaîne est 10.

Nous continuons à utiliser la même fonction substr() pour traiter un vecteur de chaînes. Cependant, notez deux différences majeures dans ce cas.

  • Le premier argument de substr() est maintenant un vecteur de chaînes. (C’est un vecteur de vecteurs de caractères.)
  • Au fur et à mesure que substr() est appliqué à chaque élément vectoriel, nchar() transmet le nombre de caractères dans cet élément. Contrairement aux langages de programmation procéduraux, il n’est pas nécessaire d’écrire une boucle pour parcourir chaque élément vectoriel.

Le code ci-dessous supprime le premier caractère de chaque élément vectoriel.

Exemple de code :

substr(myVector, 2, nchar(myVector))

Production :

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

Utiliser la fonction sub() avec une expression régulière

Les expressions régulières font référence à un système de correspondance de modèles de chaînes très élaboré. C’est un outil puissant pour identifier les modèles dans les chaînes.

Une présentation générale des expressions régulières dépasse le cadre de cet article ; plusieurs livres ont été écrits sur le sujet. Néanmoins, puisque nous devons utiliser une expression régulière avec la fonction sub(), seules les fonctionnalités essentielles seront introduites.

  • Le point, ou point, correspond à n’importe quel caractère, une seule instance de n’importe quel caractère.
  • Le caret, ^ au début, correspond à un motif au début d’une chaîne.

En utilisant ces deux caractères, nous créons les deux modèles d’expressions régulières suivants :

  1. Le motif (.) correspond à n’importe quel caractère.
  2. Le modèle ^ correspond à n’importe quel caractère au début de la chaîne.

La fonction sub() de la base R est une fonction de filtrage et de remplacement de motifs dans laquelle nous allons utiliser une expression régulière pour supprimer le premier caractère d’une chaîne.

Les points principaux concernant l’utilisation de cette fonction sont les suivants :

  1. La fonction est de la forme sub('searchpattern', 'replacement', 'string').
  2. Le premier argument est le modèle que nous recherchons.
  3. La seconde est la chaîne qui remplace la première instance du modèle de recherche une fois qu’elle est trouvée.
  4. La troisième est la chaîne dans laquelle nous recherchons le motif et remplaçons le motif.
  5. Par défaut, cette fonction est sensible à la casse.
  6. Cette fonction correspond et remplace uniquement la première instance du modèle de recherche.

Le code suivant illustre la fonction sub() avec le point comme expression régulière (le modèle de recherche). Le premier caractère, qui est la première correspondance, est remplacé par A.

Exemple de code :

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

Production :

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

Notre tâche principale est de supprimer le premier caractère d’une chaîne plutôt que de le remplacer.

Pour supprimer le premier caractère de la chaîne à l’aide de cette technique, nous devons utiliser une chaîne vide, '', comme deuxième argument. Regardez le code.

Exemple de code :

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

Production :

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

L’exemple suivant illustre la fonction sub() avec le vecteur de chaînes que nous avons déjà créé. Ce code supprime le premier caractère de chaque élément du vecteur.

Exemple de code :

sub('.','', myVector)

Production :

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

Avant de passer à la technique suivante, une mise en garde s’impose. Base R a une autre fonction de correspondance et de remplacement de modèle, gsub().

gsub() correspond et remplace toutes les instances du modèle de recherche, contrairement à la fonction sub(), qui correspond et remplace la première instance du modèle de recherche. Vous avez peut-être remarqué que bien que cette section présente deux expressions régulières, l’exemple de code n’en utilise qu’une seule.

La raison en est qu’avec la fonction sub(), seul le point est suffisant pour correspondre à n’importe quel premier caractère car il ne correspond qu’à la première instance du motif de recherche. gsub() se comporte différemment ; le point correspond à chaque caractère.

Exemple de code :

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

Production :

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

Nous constatons que gsub() a remplacé chaque caractère par la chaîne de remplacement, 'A' dans ce cas. Pour forcer gsub() à ne correspondre qu’au modèle de recherche au début de la chaîne, nous devons faire précéder le point du caret, comme dans l’exemple suivant.

Exemple de code :

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

Production :

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

Pour la tâche de supprimer uniquement le premier caractère d’une chaîne ou d’un vecteur de chaînes, la fonction sub() est une option plus simple par rapport à son homologue proche, gsub().

Utiliser le paquet stringr

Le package stringr fournit la fonction str_sub() pour supprimer le premier caractère d’une chaîne. Contrairement à la fonction de base R substr(), nous n’avons pas besoin d’une autre fonction telle que nchar() pour obtenir la position d’index du dernier caractère lorsque nous utilisons la fonction str_sub() sur un vecteur de chaînes.

Cependant, puisque le package stringr fournit cette fonction, les utilisateurs devront d’abord installer ce package (tâche unique) et le charger avant de l’utiliser (dans chaque session).

Les principaux points concernant l’utilisation de la fonction str_sub() sont les suivants :

  1. La fonction prend trois arguments.
  2. Le premier argument est la chaîne ou le vecteur de chaînes.
  3. Le deuxième argument est la position d’index à partir de laquelle commencer la sous-chaîne. Pour supprimer le premier caractère, nous devons commencer à la position d’index 2.
  4. Le troisième argument est la position d’index à laquelle terminer la sous-chaîne. Pour conserver tous les caractères jusqu’à la fin de la chaîne, nous devons lui donner la position d’index du dernier caractère, qui est -1. C’est ce qui rend cette fonction particulièrement utile.

Lors de l’utilisation de la fonction substr() de la base R, nous avons calculé la position d’index du dernier caractère de chaque chaîne à l’aide de la fonction nchar(). Cependant, la fonction str_sub() spécifie les positions d’index à partir de la fin d’une chaîne en utilisant des entiers négatifs.

La position d’index du dernier caractère est -1, la position d’index de l’avant-dernier caractère est -2, etc. Cette fonctionnalité nous permet de spécifier notre sous-chaîne en utilisant uniquement cette fonction.

Par exemple, str_sub('thesaurus',2,-1) commence à extraire (conserver) la sous-chaîne à partir de la position d’index 2 de la chaîne d’origine, c’est-à-dire à partir de la lettre h, et conserve tous les caractères jusqu’à la position d’index -1 de la chaîne d’origine, c’est-à-dire le dernier caractère, s. Il renvoie donc la chaîne hesaurus.

Ce code illustre l’utilisation de la fonction avec la seule chaîne dictionnaire et le vecteur de chaînes que nous avons créé.

Exemple de code :

# 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.

Résultat (après l’installation et le chargement du package) :

> # 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"

Obtenir de l’aide

RStudio permet d’obtenir plus d’informations sur n’importe quelle fonction ou commande.

Cliquez sur Help > R Help pour faire apparaître le volet Help dans la fenêtre Files / Plots / Packages / Help / Viewer en bas à droite de l’interface de RStudio.

Recherchez l’une des fonctions mentionnées dans cet article à l’aide du champ de recherche en haut de cette page. Ne saisissez pas les parenthèses après le nom de la fonction dans la zone de recherche.

Cliquer sur Help > Search R Help place le curseur dans la zone de recherche de cette page.

Conclusion

Plusieurs techniques sont disponibles pour supprimer le premier caractère d’une chaîne. La fonction de base R substr() est facilement disponible mais nécessite une autre fonction de base R, la fonction nchar(), pour un vecteur de chaînes.

La fonction sub() est puissante, mais toute sa puissance et sa complexité ne nécessitent pas la simple tâche de supprimer le premier caractère de la chaîne. La fonction str_sub() est pratique, mais elle nécessite l’installation et le chargement du package stringr.

Chacune de ces techniques donne le résultat attendu. Le choix appartient à l’utilisateur.

Auteur: 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.

Article connexe - R String