带有额外自定义参数的函数调用
Function call with additional custom arguments
我正在尝试绕过 R 中的省略号。我有一个函数,并希望能够根据需要向该函数传递额外的参数,例如是否 return a 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')
这个returns Null,因为它显然不会传递给return.var。
我想你可以做类似的事情,捕获 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
我正在尝试绕过 R 中的省略号。我有一个函数,并希望能够根据需要向该函数传递额外的参数,例如是否 return a 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')
这个returns Null,因为它显然不会传递给return.var。
我想你可以做类似的事情,捕获 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