
464
|
第
15
章
15.6 定义函数参数的默认值
15.6.1 问题
需要为函数定义默认参数,即调用者未提供显式参数时要使用的值。
15.6.2 解决方案
R 允许你在 function 定义中设置参数的默认值:
my_fun <- function(
param = default_value
) {
...
}
15.6.3 讨论
让我们创建一个示例函数,用来对给定的名字给出问候:
greet <- function(name) {
cat("Hello,", name, "\n")
}
greet("Fred")
#> Hello, Fred
如果我们在没有给出 name 参数的情况下调用 greet,我们会得到下面的错误:
greet()
#> Error in cat("Hello,", name, "\n") :
#> argument "name" is missing, with no default
但是,我们可以更改函数定义以定义默认的 name 参数。在这种情况下,我们将参数
name 默认为通用名称 world:
greet <- function(name = "world") {
cat("Hello,", name, "\n")
}
现在,如果省略参数,R 提供默认值:
greet()
#> Hello, world
这种默认机制很方便。尽管如此,我们建议谨慎地使用它。我们已经看到太多的情况,
函数
创建者
定义了默认值,而函数
调用者
没有多想就接受了默认值,导致了可疑的结
果。例如,如果你使用
k
近邻算法,则 ...