Trier des vecteurs
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 37 sur 64.
sort(x) renvoie les valeurs de x dans l’ordre croissant, et decreasing = TRUE inverse cet ordre. Le vecteur d’origine n’est pas modifié :
scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)Résultat :
[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88Le texte est trié par ordre alphabétique. L’ordre exact dépend des paramètres de langue du système : sur Coddy, comme sur de nombreux serveurs, les lettres majuscules viennent avant les lettres minuscules, ainsi "Zed" est trié avant "ada". Utilisez tolower() lorsque la casse ne doit pas avoir d’importance :
names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))Résultat :
[1] "Zed" "ada" "cy"
[1] "ada" "cy" "zed"rev(x) inverse l’ordre actuel sans effectuer de tri, et head(x, n) conserve les n premiers éléments, ce qui, avec sort(), permet d’obtenir une liste des meilleurs résultats :
scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))Résultat :
[1] 88 60 95 72
[1] 95 88Un vecteur nommé trié conserve chaque nom avec sa valeur, de sorte que les noms apparaissent dans l’ordre des valeurs :
stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])Résultat :
[1] "jam" "oil" "tea"
[1] 3Défi
FacileComplétez top_scores(scores, n). Retournez les n scores les plus élevés, du plus grand au plus petit, reliés par , . S’il y a moins de n scores, retournez-les tous.
Le code fourni lit les scores sous forme de ligne séparée par des virgules ainsi que n, puis affiche la valeur retournée.
Essayez vous-même
top_scores <- function(scores, n) {
# Écrivez votre code ici
""
}
# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), 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 notes8Trier et regrouper
Trier des vecteursTrier selon une cléRegrouper avec split()Synthèses des groupesRécapitulatif - Classement3Ensembles 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