Вызов функции с дополнительными настраиваемыми аргументами - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь обернуть голову вокруг многоточия в R. У меня есть функция, и я хочу иметь возможность передавать дополнительные аргументы функции по мере необходимости, например, возвращать ли df или подобное.Могу ли я не указывать имена переменных?Это очень упрощенный пример, и я хочу иметь возможность сделать это необязательным, чтобы сделать вызовы функций как можно более простыми и понятными с помощью нескольких возможных условий внутри функции для различных сценариев.

 custom.fun<-function(x, y, z, ...){

 a<-sum(x, y, z)

   if (exists('return.var') && return.var=='yes'){
     return(a)
   }
 }

 A<-custom.fun(1,2,3,return.var='yes')

Возвращает значение Null, поскольку оно явно не передается в return.var.

1 Ответ

2 голосов
/ 20 сентября 2019

Полагаю, вы можете сделать что-то похожее на это, захватить все необязательные аргументы в list и проверить, имеют ли any из них необходимые имя и значение.

custom.fun<-function(x, y, z, ...){
   opt_args <- list(...)
   a <- sum(x, y, z)
   if (any(names(opt_args) == 'return.var' & opt_args == 'yes'))
       return(a)
   else 
       return('No arg')
}

custom.fun(1,2,3,return.var = 'yes')
#[1] 6

custom.fun(1,2,3,var = 'yes')
#[1] "No arg"

custom.fun(1,2,3,var='no', return.var = 'yes')
#[1] 6
...