Ich interessiere mich für die "richtige" Art, Funktionen mit optionalen Argumenten in R zu schreiben. Im Laufe der Zeit bin ich auf einige Codeteile gestoßen, die hier einen anderen Weg einschlagen, und ich konnte keine richtige (offizielle) Position finden Zu diesem Thema.
Bis jetzt habe ich optionale Argumente wie diese geschrieben:
fooBar <- function(x,y=NULL){
if(!is.null(y)) x <- x+y
return(x)
}
fooBar(3) # 3
fooBar(3,1.5) # 4.5
Die Funktion gibt einfach ihr Argument zurück, wenn nur angegeben x
wird. NULL
Für das zweite Argument wird ein Standardwert verwendet. Wenn dies nicht der Fall ist NULL
, fügt die Funktion die beiden Zahlen hinzu.
Alternativ könnte man die Funktion so schreiben (wobei das zweite Argument durch den Namen angegeben werden muss, aber man könnte auch unlist(z)
oder z <- sum(...)
stattdessen definieren ):
fooBar <- function(x,...){
z <- list(...)
if(!is.null(z$y)) x <- x+z$y
return(x)
}
fooBar(3) # 3
fooBar(3,y=1.5) # 4.5
Persönlich bevorzuge ich die erste Version. Ich kann jedoch mit beiden gut und schlecht sehen. Die erste Version ist etwas weniger fehleranfällig, aber die zweite könnte verwendet werden, um eine beliebige Anzahl von Optionen aufzunehmen.
Gibt es eine "richtige" Möglichkeit, optionale Argumente in R anzugeben? Bisher habe ich mich für den ersten Ansatz entschieden, aber beide können sich gelegentlich etwas "hackig" fühlen.
xy.coords
auf einen häufig verwendeten Ansatz.