Menu
Coddy logo textTech

Itération sur les caractères (strsplit)

Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 65 sur 78.

Et si vous avez besoin de traiter chaque caractère d'une chaîne de caractères individuellement ? Contrairement aux vecteurs, vous ne pouvez pas parcourir directement les caractères d'une chaîne dans R. La fonction strsplit() résout ce problème en divisant une chaîne en un vecteur de caractères.

La fonction strsplit() prend deux arguments : la chaîne à diviser et le séparateur. Pour diviser en caractères individuels, utilisez une chaîne vide "" comme séparateur :

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

Résultat :

[1] "h" "e" "l" "l" "o"

Remarquez le [[1]] à la fin. C'est parce que strsplit() retourne une liste, et nous devons extraire le premier élément pour obtenir notre vecteur de caractères. Une fois que vous avez les caractères sous forme de vecteur, vous pouvez itérer dessus en utilisant les techniques que vous avez déjà apprises :

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

Sortie :

[1] "R"

Cette technique est essentielle pour des tâches telles que compter des caractères spécifiques, inverser des chaînes de caractères ou valider une saisie caractère par caractère.

challenge icon

Défi

Facile

Vous recevrez une seule ligne d'entrée contenant un mot (par exemple, programming).

En utilisant strsplit() pour diviser la chaîne en caractères individuels :

  1. Divisez le mot d'entrée en un vecteur de caractères
  2. Parcourez chaque caractère du vecteur à l'aide d'une boucle
  3. Comptez combien de fois la lettre "a" apparaît dans le mot (sensible à la casse)
  4. Affichez chaque caractère sur sa propre ligne en utilisant print()
  5. Après la boucle, affichez le compte en utilisant cat() avec le format : Count of 'a': X suivi d'un saut de ligne

Par exemple, si l'entrée est :

banana

La sortie devrait être :

[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3

Explication : Le mot "banana" est divisé en caractères c("b", "a", "n", "a", "n", "a"). Chaque caractère est affiché, et la lettre "a" apparaît 3 fois.

Aide-mémoire

Pour diviser une chaîne en caractères individuels, utilisez strsplit() avec une chaîne vide "" comme séparateur :

word <- "hello"
chars <- strsplit(word, "")[[1]]
print(chars)

Sortie :

[1] "h" "e" "l" "l" "o"

Le [[1]] extrait le premier élément de la liste renvoyée par strsplit(), vous donnant un vecteur de caractères.

Vous pouvez ensuite parcourir les caractères en boucle :

word <- "R"
chars <- strsplit(word, "")[[1]]
for (char in chars) {
  print(char)
}

Essayez vous-même

# Lire l'entrée
con <- file("stdin", "r")
word <- suppressWarnings(readLines(con, n = 1))

# Initialiser le compteur pour la lettre 'a'
count_a <- 0

# À FAIRE : Écrivez votre code ci-dessous
# 1. Utiliser strsplit() pour diviser le mot en caractères individuels
# 2. Parcourir chaque caractère
# 3. Afficher chaque caractère en utilisant print()
# 4. Compter combien de fois 'a' apparaît

# Afficher le décompte de 'a'
cat("Count of 'a': ", count_a, "\n", sep = "")
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux