Next: , Previous: Defining new binary operators, Up: Writing your own functions



10.3 参数命名和默认值

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)

这就改变了一个默认值。

特别说明一下,默认值可以是任何表达式,甚至是函数本身 所带有的其他参数;它们没有要求 是常数。我们的例子采用常数只是使问题简单容易说明。