我对在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
,则函数将两个数字相加。
或者,可以这样编写函数(其中第二个参数需要通过名称指定,但也可以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”。
xy.coords
以了解常用方法。