Voglio creare una funzione wrapper che sostituisca alcuni degli argomenti predefiniti.R: utilizzo dell'argomento ellissi (...)
Ecco il cuore del problema che sto lottando con:
Error in localWindow(xlim, ylim, log, asp, ...) :
formal argument "cex" matched by multiple actual arguments
Ora un po 'di contesto. Supponiamo che io definisco una funzione wrapper per il grafico come questo:
myplot <- function(x, ...) {
plot(x, cex= 1.5, ...)
}
Se chiamo myplot(1:10, cex= 2)
mi metterò l'errore precedente. So che posso girare ...
a un elenco
l <- list(...)
e poi ho potuto fare
if(is.null(l[["cex"]])) l[["cex"]] <- 2
Tuttavia, come posso "insert" questa lista tornare all'argomento puntini di sospensione? Qualcosa di simile (so che questo non funziona):
... <- l
EDIT: ho potuto utilizzare le impostazioni predefinite in myplot
definizione (come suggerito nella risposta da @Thomas), ma io non voglio: la funzione di interfaccia diventerà disordinato. Credo che avrei potuto definire una funzione di supporto del genere:
.myfunchelper <- function(x, cex= 2.0, ...) {
plot(x, cex= cex, ...)
}
myfunc <- function(x, ...) {
.myfunchelper(x, ...)
}
Ma (i) è meno elegante e (ii) non soddisfa la mia curiosità.
Sì, ma questo è esattamente ciò che voglio evitare. Il vero problema è complesso, e non voglio mettere i valori predefiniti nella definizione della chiamata di funzione - ci sono già troppi argomenti. – January
Ho aggiornato in base alle risposte da: http://stackoverflow.com/questions/7028385/can-i-remove-an-element-in-dot-dot-dot-and-pass-it-on/7028786# 7028786 – Thomas