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.
Défi
FacileVous 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 :
- Divisez le mot d'entrée en un vecteur de caractères
- Parcourez chaque caractère du vecteur à l'aide d'une boucle
- Comptez combien de fois la lettre
"a"apparaît dans le mot (sensible à la casse) - Affichez chaque caractère sur sa propre ligne en utilisant
print() - Après la boucle, affichez le compte en utilisant
cat()avec le format :Count of 'a': Xsuivi d'un saut de ligne
Par exemple, si l'entrée est :
bananaLa sortie devrait être :
[1] "b"
[1] "a"
[1] "n"
[1] "a"
[1] "n"
[1] "a"
Count of 'a': 3Explication : 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 = "")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
4Opérateurs - Partie 2
Opérateurs logiques (AND, OR)Opérateurs logiques - Partie 2 (NOT)Récapitulatif - Logique simpleLogique vectorisée - Partie 1Logique vectorisée - Partie 27Calculateur de partage d'addition
Message de bienvenueRécupérer la saisie utilisateur10FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz2Variables et types de données
Type de données numériqueType de données entierType de données caractèreType de données logiqueVérification des types de donnéesConventions de nommageValeurs manquantes : NARécapitulatif - Création de variables8Boucles
Boucle ForBoucle WhileBreakSuivant (Continue)Récapitulatif - FactorielleGénération de séquences (seq, :)Boucles imbriquéesRécapitulatif - Saisie dynamique3Opérateurs, partie 1
Opérateurs arithmétiquesDivision entière et moduloOpérateurs d'affectationRécapitulatif - Mathématiques simplesOpérateurs de comparaison6Entrées/Sorties de base
Affichage avec PrintCat pour l'affichageAffichage avec des variablesLire l'entrée avec readline()Bases de la conversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Fonctions
Déclarer une fonctionArguments de fonctionValeurs de retourRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs de paramètres par défaut12Itération sur les séquences
Itération sur les éléments d'un vecteurUtilisation de seq_along()Itération sur les caractères (strsplit)Fonctions de manipulation de chaînes