Menu
Coddy logo textTech

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 88

Le 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 88

Un 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] 3
challenge icon

Défi

Facile

Complé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")
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 Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur R en ligne