【发布时间】:2015-04-06 20:37:58
【问题描述】:
我对在 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的源代码,了解常用方法。 -
Carl Witthoftl提到的
xy.coords的源代码可以在xy.coords找到