Sono interessato a qual è il modo "corretto" di scrivere funzioni con argomenti opzionali in R. Nel corso del tempo, mi sono imbattuto in alcuni pezzi di codice che prendono una strada diversa qui e non sono riuscito a trovare una posizione (ufficiale) corretta su questo argomento.
Fino ad ora, ho scritto argomenti opzionali come questo:
fooBar <- function(x,y=NULL){
if(!is.null(y)) x <- x+y
return(x)
}
fooBar(3) # 3
fooBar(3,1.5) # 4.5
La funzione restituisce semplicemente il suo argomento se x
viene fornita solo . Utilizza un NULL
valore predefinito per il secondo argomento e se l'argomento non lo è NULL
, la funzione aggiunge i due numeri.
In alternativa, si potrebbe scrivere la funzione in questo modo (dove il secondo argomento deve essere specificato per nome, ma si potrebbe anche unlist(z)
o definire z <- sum(...)
invece):
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
Personalmente preferisco la prima versione. Tuttavia, posso vedere il bene e il male con entrambi. La prima versione è un po 'meno soggetta a errori, ma la seconda potrebbe essere utilizzata per incorporare un numero arbitrario di opzioni.
Esiste un modo "corretto" per specificare argomenti opzionali in R? Finora, ho optato per il primo approccio, ma a volte entrambi possono sentire un po '"confuso".
xy.coords
vedere un approccio comunemente usato.