Menu
Coddy logo textTech

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] 10

Eine 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"
challenge icon

Aufgabe

Einfach

Vervollstä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 = "")
}
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