我对在 R 中编写带有可选参数的函数的“正确”方法很感兴趣。随着时间的推移,我偶然发现了一些在这里采用不同路径的代码,我找不到合适的(官方)位置关于这个话题。
到目前为止,我已经编写了这样的可选参数:
fooBar <- function(x,y=NULL){ if(!is.null(y)) x <- x+y return(x) } fooBar(3) # 3 fooBar(3,1.5) # 4.5
如果仅提供了该函数,则该函数仅返回其参数x。它对第二个参数使用默认NULL值,如果该参数恰好不是NULL,则该函数将两个数字相加。
x
NULL
或者,可以像这样编写函数(其中第二个参数需要按名称指定,但也可以unlist(z)或定义z <- sum(...)代替):
unlist(z)
z <- sum(...)
fooBar <- function(x,...){ z <- list(...) if(!is.null(z$y)) x <- x+z$y return(x) } fooBar(3) # 3 fooBar(3,y=1.5) # 4.5
我个人更喜欢第一个版本。但是,我可以看到两者的好坏。第一个版本不太容易出错,但第二个版本可用于合并任意数量的选项。
是否有一种“正确”的方式来指定 R 中的可选参数?到目前为止,我已经选择了第一种方法,但两者偶尔都会觉得有点“hacky”。
您还可以missing()用来测试是否y提供了参数:
missing()
y
fooBar <- function(x,y){ if(missing(y)) { x } else { x + y } } fooBar(3,1.5) # [1] 4.5 fooBar(3) # [1] 3