Menu
Coddy logo textTech

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

Der 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] 4

Ein 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] 15

Ein 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.

challenge icon

Aufgabe

Einfach

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