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")
}Sortie :
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 l’entrée en boucle et mettre à jour une table de recherche 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, puis 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))Sortie :
[1] 3
[1] "red" "blue" "green"Pour construire les lignes de sortie, rassemble-les dans un vecteur à l’intérieur de la boucle et 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, dans l’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 : gardez-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