Schlüssel hinzufügen und entfernen
Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 9 von 64.
Die Zuweisung an einen Namen aktualisiert seinen Wert, wenn der Schlüssel vorhanden ist, und fügt einen neuen Eintrag hinzu, wenn er nicht vorhanden ist:
stock <- c(apples = 12, pears = 3)
stock["pears"] <- 5
stock["plums"] <- 8
print(stock)Ausgabe:
apples pears plums
12 5 8 Um einen Wert basierend auf seinem aktuellen Wert zu ändern, lies denselben Schlüssel aus und schreibe ihn:
stock <- c(apples = 12, pears = 3)
stock["apples"] <- stock["apples"] - 2
print(stock[["apples"]])Ausgabe:
[1] 10Eine Nachschlagetabelle kann mit c() leer beginnen und jeweils um einen Schlüssel erweitert werden:
ages <- c()
ages["Ada"] <- 36
ages["Linus"] <- 21
print(names(ages))Ausgabe:
[1] "Ada" "Linus"Entferne einen Eintrag aus einem benannten Vektor, indem du alle anderen Namen beibehältst:
stock <- c(apples = 12, pears = 3, plums = 8)
stock <- stock[names(stock) != "pears"]
print(names(stock))Ausgabe:
[1] "apples" "plums" Für eine Liste entfernt die Zuweisung von NULL den Eintrag:
user <- list(name = "Ada", temp = TRUE)
user[["temp"]] <- NULL
print(names(user))Ausgabe:
[1] "name"Aufgabe
EinfachVervollständige apply_delivery(stock, item, qty). Addiere qty zum Bestand von item oder füge item mit der Menge qty hinzu, wenn es noch nicht vorrätig ist. Gib den aktualisierten Bestand zurück.
Der bereitgestellte Code liest den Bestand als Paare im Format name=quantity und anschließend den Artikel und die Menge ein. Er gibt jeden Eintrag des zurückgegebenen Bestands als name: quantity in der Reihenfolge des Bestands aus.
Probier es selbst
apply_delivery <- function(stock, item, qty) {
# Schreibe deinen Code hier
stock
}
# Mitgelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
stock <- c()
for (pair in strsplit(input[1], ",")[[1]]) {
kv <- strsplit(pair, "=")[[1]]
stock[kv[1]] <- as.numeric(kv[2])
}
stock <- apply_delivery(stock, input[2], as.numeric(input[3]))
for (name in names(stock)) {
cat(name, ": ", stock[[name]], "\n", sep = "")
}
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