Menu
Coddy logo textTech

Die switch()-Funktion

Teil des Abschnitts Logik und Ablaufsteuerung der R-Journey von Coddy. Lektion 47 von 64.

switch(x, name = value, ...) vergleicht den Text x mit den Namen und gibt den Wert des passenden Namens zurück. Es ersetzt eine lange Kette von else if-Vergleichen mit derselben Variable:

size <- "m"
price <- switch(size, s = 2.5, m = 3, l = 3.5)
print(price)

Ausgabe:

[1] 3

Ein letzter Wert ohne Namen ist der Standardwert, der verwendet wird, wenn nichts übereinstimmt. Ohne einen Standardwert gibt ein nicht übereinstimmendes switch() unsichtbar NULL zurück:

day <- "fri"
print(switch(day, sat = "rest", sun = "rest", "work"))
print(is.null(switch("x", a = 1)))

Ausgabe:

[1] "work"
[1] TRUE

Ein leerer Wert fällt auf den nächsten zurück, sodass mehrere Namen ein Ergebnis teilen können:

kind <- function(day) switch(day, sat = , sun = "weekend", "weekday")
print(kind("sun"))
print(kind("tue"))

Ausgabe:

[1] "weekend"
[1] "weekday"

Die Werte können ganze Codeblöcke in geschweiften Klammern sein, und das Ergebnis ist der letzte Ausdruck des ausgeführten Blocks:

area <- function(shape, a, b = a) {
  switch(shape,
    square = a^2,
    rect = a * b,
    circle = {
      r <- a / 2
      round(pi * r^2, 2)
    },
    NA)
}
print(area("rect", 3, 4))
print(area("circle", 10))

Ausgabe:

[1] 12
[1] 78.54
challenge icon

Aufgabe

Einfach

Vervollständige calculate(a, op, b). op ist entweder plus, minus, times oder over. Gib das Ergebnis der Anwendung auf a und b zurück oder bei jedem anderen op unknown operation. Eine Division durch null gibt cannot divide by zero zurück.

Der bereitgestellte Code liest a, op und b (jeweils eine Zeile) ein und gibt den zurückgegebenen Wert aus.

Probier es selbst

calculate <- function(a, op, b) {
  # Schreibe deinen Code hier
  "unknown operation"
}

# Mitgelieferter Ein-/Ausgabecode: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
cat(calculate(as.numeric(input[1]), input[2], as.numeric(input[3])), 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