2013-04-04 13 views
5

Mam funkcji do_something który odbiera cztery argumenty i wywołuje funkcji wewnętrznej get_options:Jak ponownie użyć argumentów w funkcji wewnętrznej?

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) 
} 

Czasami robię get_options(400), innym razem chcę zastąpić argumenty get_options(400, manufacturer = "def"), innym razem nazywam do_something("A", 400) lub do_something("A", 400, width=10).

Wygląda na to, że jestem redundantny, podając te same wartości domyślne dla moich argumentów w obu funkcjach. Czy istnieje lepszy sposób na udostępnienie tych wartości domyślnych?

+0

Staram się zobaczyć tutaj pytanie. Twój przykład nie jest szczególnie pouczający. – mnel

Odpowiedz

7

Można użyć wielokropka (...), a tylko dać domyślnie funkcji najniższego poziomu:

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

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

powinna nadal być w stanie uruchomić wszystkie wymienione poniżej:

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

iz te same wyniki.

+0

Dzięki, że to zrobiliście. – nachocab

Powiązane problemy