Next: The ellipsis argument (...), Previous: Defining new binary operators, Up: Writing your own functions
和 Generating regular sequences 提示的一样,如果调用的函数的参数
以“name=object”的方式给出,
它们可以用任何顺序。但是,参数赋值序列可能以
未命名的,位置特异性的方式给出,同时也有可能
在这些位置特异性的参数后加上命名参数赋值。
因此,如果有下面方式定义的函数 fun1
> fun1 <- function(data, data.frame, graph, limit) {
[function body omitted]
}
那么函数将会被好几种方式调用,如
> ans <- fun1(d, df, TRUE, 20)
> ans <- fun1(d, df, graph=TRUE, limit=20)
> ans <- fun1(data=d, limit=20, graph=TRUE, data.frame=df)
上面所有的方式是等价的。
许多时候,参数会被设定一些默认值。
如果默认值适合你要做的事情,你可以省略这些参数。
例如,函数 fun1 用下面的方式
定义
> fun1 <- function(data, data.frame, graph=TRUE, limit=20) { ... }
它可以被如下命令调用
> ans <- fun1(d, df)
这和前面的三种情况等价。
> ans <- fun1(d, df, limit=10)
这就改变了一个默认值。
特别说明一下,默认值可以是任何表达式,甚至是函数本身 所带有的其他参数;它们没有要求 是常数。我们的例子采用常数只是使问题简单容易说明。