我对在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"。
答案
你也可以使用missing()
测试该论点是否y
被提供:
fooBar <- function(x,y){
if(missing(y)) {
x
} else {
x + y
}
}
fooBar(3,1.5)
# [1] 4.5
fooBar(3)
# [1] 3