Benannte Vektor-Suchen
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 7 von 64.
Ein benannter Vektor speichert Werte unter Namen, wodurch er zu einer Nachschlagetabelle wird: Der Name ist der Schlüssel und das Element ist sein Wert. Setze den Namen in [[ ]], um nur den Wert zu erhalten.
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))Ausgabe:
[1] 7
[1] "tea" "cake"Eckige Klammern geben das Element zusammen mit seinem Namen zurück. [[ ]] gibt nur den Wert zurück:
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)Ausgabe:
cake
7
[1] 14Der Name kann aus einer Variable stammen. So sucht ein Programm einen Schlüssel nach, den es aus der Eingabe gelesen hat:
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])Ausgabe:
[1] 4Ein Vektor aus Namen sucht mehrere Schlüssel gleichzeitig, einschließlich Wiederholungen, sodass sum() eine Bestellung in einem Schritt summiert:
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))Ausgabe:
[1] 15Ein fehlender Name verhält sich in den beiden Formen unterschiedlich: prices["milk"] gibt NA zurück, und prices[["milk"]] bricht mit dem Fehler subscript out of bounds ab.
Aufgabe
EinfachVervollständige line_total(item, qty). Die Funktion definiert das unten stehende Menü. Gib den Preis von item multipliziert mit qty zurück, formatiert mit zwei Dezimalstellen: tea und 3 ergeben 7.50.
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)Jedes Element in der Eingabe steht auf der Speisekarte. Der bereitgestellte Code liest das Element und die Menge ein und gibt den zurückgegebenen Wert aus.
Probier es selbst
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# Schreibe deinen Code hier
""
}
# Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[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 eintragen3Mengen 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