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 88Text 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 88Ein 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] 3Aufgabe
EinfachVervollstä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")
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
1Strings im Detail
Teilstrings mit substr()Formatierung mit sprintf()Aufteilen und VerbindenStrings durchsuchenText ersetzenWiederholung – Benutzernamen-Generator4Matrizen
Matrizen erstellenMatrizen indizierenZusammenfassungen von Zeilen und SpaltenMatrizenarithmetikRückblick – Sitzplan10Fortgeschrittener Kontrollfluss
Die switch()-FunktionVektorisierter ifelse()repeat und breakRekursive FunktionenRückblick – Notenklassifizierung2Schlüssel-Wert-Suchen
Benannte Vektor-SuchenSchlüssel prüfenSchlüssel hinzufügen und entfernenNamen durchlaufenRückblick – Aktienübersicht5Projekt – Notenbuch
Schüler hinzufügenNoten eintragen8Sortieren und Gruppieren
Vektoren sortierenNach einem Schlüssel sortierenGruppieren mit split()GruppenzusammenfassungenRückblick – Rangliste3Mengen und Zählen
Eindeutige WerteMengenoperationenZugehörigkeitstestsZählen mit table()Rückblick – Gäste einer Veranstaltung6Funktionen als Werte
Anonyme FunktionenFunktionen übergebenFunktionen zurückgebenClosures mit ZustandRückblick – Rabattregeln9Datenrahmen
Datenrahmen erstellenSpalten und ZeilenZeilen filternHinzufügen und SortierenZusammenfassung – Verkaufsbericht12Projekt – Ausgaben-Tracker
Ausgaben erfassenGesamtausgabenÜbe selbstständig: Online-R-Compiler