Manchmal möchte man eine bestehende Funktion in der Programmiersprache R um einen eigenen Parameter erweitern. Die Parameter der Ausgangsfunktion sollen dabei einfach übernommen werden, ohne sie innerhalb der eigenen Funktion definieren und einzeln übergeben zu müssen. Die Weiterleitung von Parametern kann in R durch ...
realisiert werden.
Im folgenden Beispiel erweitere ich die R-Funktion plot()
. In der neuen Funktion plot.mein()
kann zusätzlich eine rote horizontale und/oder vertikale Linie eingezeichnet werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # Definition der neuen Funktion plot.mein <- function(..., hline=NULL, vline=NULL) { # Plote die Daten # Leite die Grafik-Parameter direkt an die Funktion plot() weiter plot(...) # Füge eventuell eine horizontale rote Linie hinzu if(!is.null(hline)) { abline(h=hline, col="#ff0000") } # Füge eventuell eine vertikale rote Linie hinzu if(!is.null(vline)) { abline(v=vline, col="#ff0000") } } # Die Parameter x, y und type werden direkt an die Funktion plot weitergeleitet plot.mein(c(1:6), c(16:11), hline=3, vline=2, type="b") # Wenn die Namen der Parameter angegeben werden, # dann spielt auch die Reihenfolge beim Aufruf keine Rolle plot.mein(hline=3, x=c(1:6), vline=2, y=c(16:11), type="b") |
Man kann auch die Standard-Parameter der Ausgangsfunktion ändern. Dazu muss der Parameter in der Definition der eigenen Funktion mit dem gewünschten Wert eingetragen werden (hier: type="o"
). Der Parameter muss zusätzlich explizit an die Ausgangsfunktion übergeben werden (hier: type=type
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # Ändere den Standardwert für type plot.mein <- function(..., hline=NULL, vline=NULL, type="o") { # type muss explizit übergben werden plot(..., type=type) # [...] } # Der in plot.mein() festgelegte Standadwert für type ("o") wird verwendet plot.mein(c(1:6), c(16:11), hline=3, vline=2) # Hier wird der beim Aufruf angegebene Wert für type ("b") verwendet plot.mein(c(1:6), c(16:11), hline=3, vline=2, type="b") |