2013-04-04 12 views
5

Ho una funzione do_something che riceve quattro argomenti e chiama una funzione interna get_options:Come riutilizzare gli argomenti in una funzione interna?

do_something <- function(name, amount, manufacturer="abc", width=4){ 
    opts <- get_options(amount, manufacturer = manufacturer, width = width) 
} 

get_options <- function(amount, manufacturer="abc", width = 4) { 
    opts <- validate_options(manufacturer, width) 
} 

volte faccio get_options(400), altre volte mi desidera ignorare gli argomenti get_options(400, manufacturer = "def"), altre volte mi chiamo do_something("A", 400) o do_something("A", 400, width=10).

Sembra che stia diventando ridondante specificando gli stessi valori predefiniti per i miei argomenti in entrambe le funzioni. C'è un modo migliore per farli condividere queste impostazioni predefinite?

+0

Sto faticando a vedere una domanda qui. Il tuo esempio non è particolarmente luminoso – mnel

risposta

7

È possibile utilizzare i puntini di sospensione (...) e solo dare il default è la funzione di livello più basso:

do_something <- function(name, amount, ...){ 
    opts <- get_options(amount, ...) 
} 

get_options <- function(amount, manufacturer="abc", width = 4) { 
    opts <- validate_options(manufacturer, width) 
} 

Si dovrebbe comunque essere in grado di eseguire tutte le seguenti:

get_options(400) 
get_options(400, manufacturer = "def") 
do_something("A", 400) 
do_something("A", 400, width=10) 

e con gli stessi risultati.

+0

Grazie, l'ha fatto. – nachocab

Problemi correlati