Parcourir les noms
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 10 sur 64.
Une boucle for parcourant names(x) visite chaque clé, et x[[key]] donne la valeur correspondant à cette clé :
scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
cat(name, "scored", scores[[name]], "\n")
}Résultat :
ada scored 91
bo scored 78
cy scored 85 Les entrées conservent l’ordre dans lequel elles ont été ajoutées. Parcourez sort(names(x)) pour obtenir l’ordre alphabétique :
scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
cat(name, scores[[name]], "\n")
}Sortie :
ada 91
bo 78
cy 85 Parcourir les éléments de l’entrée et mettre à jour une table de consultation permet de compter combien de fois chaque valeur apparaît. La première fois qu’un mot est rencontré, il reçoit la valeur 1 ; ensuite, cette valeur augmente de 1 :
words <- c("red", "blue", "red", "green", "red")
counts <- c()
for (w in words) {
if (w %in% names(counts)) {
counts[w] <- counts[w] + 1
} else {
counts[w] <- 1
}
}
print(counts[["red"]])
print(names(counts))Résultat :
[1] 3
[1] "red" "blue" "green"Pour construire des lignes de sortie, rassemble-les dans un vecteur à l’intérieur de la boucle, puis renvoie-les ou affiche-les à la fin :
scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")Sortie :
ada: 91
bo: 78Défi
FacileComplétez word_counts(words). Renvoyez une ligne par mot distinct, par ordre alphabétique, au format word: count.
Le code fourni lit les mots sur une seule ligne, séparés par des espaces, et affiche chaque ligne renvoyée.
Essayez vous-même
word_counts <- function(words) {
# Écrivez votre code ici
character(0)
}
# Code d'entrée/sortie fourni : conservez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[1]]), sep = "\n")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes en profondeur
Sous-chaînes avec substr()Mise en forme avec sprintf()Scinder et joindreRechercher dans les chaînesRemplacer du texteRécapitulatif - Créateur de nom d'utilisateur4Matrices
Créer des matricesIndexer des matricesRécapitulatifs des lignes et des colonnesArithmétique matricielleRécapitulatif - Plan de salle7La famille Apply
lapply et sapplyMap et mapplyFilter et FindReduceRécapitulatif - Pipeline de données10Structures de contrôle avancées
La fonction switch()ifelse() vectorisérepeat et breakFonctions récursivesRécapitulatif – Classificateur de notes2Recherches par clé-valeur
Recherches dans des vecteurs nommésVérifier les clésAjouter et supprimer des clésParcourir les nomsRécapitulatif - Bureau des stocks5Projet - Carnet de notes
Ajouter des élèvesEnregistrer les notes3Ensembles et comptage
Valeurs uniquesOpérations sur les ensemblesTests d’appartenanceCompter avec table()Récapitulatif - Invités à l’événement6Les fonctions comme valeurs
Fonctions anonymesPasser des fonctionsRetourner des fonctionsFermetures avec étatRécapitulatif - Règles de remise9Data Frames
Créer des Data FramesColonnes et lignesFiltrer les lignesAjouter et trierRécapitulatif - Rapport des ventes12Projet - Suivi des dépenses
Enregistrer les dépensesDépenses totalesEntraînez-vous par vous-même : Compilateur R en ligne