Menu
Coddy logo textTech

Vektoren sortieren

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 37 von 64.

sort(x) gibt die Werte von x in aufsteigender Reihenfolge zurück, und decreasing = TRUE kehrt diese Reihenfolge um. Der ursprüngliche Vektor wird nicht geändert:

scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)

Ausgabe:

[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88

Text wird alphabetisch sortiert. Die genaue Reihenfolge hängt von den Spracheinstellungen des Systems ab: Auf Coddy stehen, wie auf vielen Servern, Großbuchstaben vor Kleinbuchstaben, daher wird "Zed" vor "ada" sortiert. Verwende tolower(), wenn die Groß- und Kleinschreibung keine Rolle spielen soll:

names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))

Ausgabe:

[1] "Zed" "ada" "cy" 
[1] "ada" "cy"  "zed"

rev(x) kehrt die aktuelle Reihenfolge um, ohne zu sortieren, und head(x, n) behält die ersten n Elemente bei, was zusammen mit sort() eine Top-Liste ergibt:

scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))

Ausgabe:

[1] 88 60 95 72
[1] 95 88

Ein sortierter benannter Vektor behält jeden Namen zusammen mit seinem Wert bei, sodass die Namen in der Reihenfolge der Werte ausgegeben werden:

stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])

Ausgabe:

[1] "jam" "oil" "tea"
[1] 3
challenge icon

Aufgabe

Einfach

Vervollständige top_scores(scores, n). Gib die n höchsten Punktzahlen von hoch nach niedrig zurück, verbunden durch , . Wenn es weniger als n Punktzahlen gibt, gib sie alle zurück.

Der bereitgestellte Code liest die Punktzahlen als durch Kommas getrennte Zeile und n ein und gibt den zurückgegebenen Wert aus.

Probier es selbst

top_scores <- function(scores, n) {
  # Schreibe deinen Code hier
  ""
}

# Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), sep = "\n")
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik und Ablaufsteuerung

Übe selbstständig: Online-R-Compiler