本节书摘来自华章出版社《数据科学:R语言实现》一 书中的第1章,第1.3节,作者:R for Data Science Cookbook 丘祐玮(David Chiu),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.3 匹配参数
在R函数中,参数是**函数的输入变量。我们可以给函数传递一般参数、命名参数、带有默认变量的参数,或者不确定数量的参数。在本教程中,我们会展示如何给定义好的函数传递各种各样的参数。
准备工作
确保你已经在操作系统中安装了R语言,完成了之前的步骤。
实现步骤
执行下列步骤,来创建带有不同类型参数列表的函数。
1.在R控制台中键入下列代码,来创建带有默认值的函数:
运行原理
创建函数的时候,R语言提供了灵活的参数绑定机制。在本教程中,我们首先创建了名为defaultag的函数,它带有两个形参:x和y。这里,y有一个默认值,给定为5。然后,当我们传递3来调用defaultarg函数时,它把3传递给x,把5传递给了y,并且返回了13。除了传递数值作为输入外,我们也可以给函数传递向量(或者其他任何数据类型)。在本例中,如果我们传递向量1:3给defaultarg函数,它就会返回一个向量。
接下来,我们可以看到参数是如何与函数绑定的。当我们使用不带参数名的参数来调用函数的时候,函数会通过位置来绑定传递的值。以步骤4为例,第一个参数3匹配到x,6匹配到y,函数返回15。另一方面,你也可以通过名称传递参数。在步骤5中,我们可以使用任何顺序给函数传递指定名称的参数。因此,如果我们给函数defaultarg传递y=6和x=3,函数也会返回15。
另外,我们可以使用参数作为控制语句。在步骤6中,我们指定了3个形参:x,y和type,其中,参数type带有默认值sum。接着,我们可以为参数type指定取值作为if-else控制流程中的判断条件。也就是说,当我们把sum传递给type时,函数返回x与y的加和;当我们把mean传递给type时,函数返回x和y平均值;当我们把sum和mean之外的任何取值传递给type时,函数返回x和y乘积。
最后,我们可以使用记号...给函数传递不确定数量的参数。在本例的最后一个步骤中,如果我们只给函数传递3和5,函数会先把3传递给x,5传递给y。然后,函数给x加上2,给y乘以2。最后,求x和y的和。然而,如果我们给函数传递两个以上的参数,函数也会对额外的参数求和。
更多技能
除了给出完整的参数名,我们也可以使用参数的缩写来调用函数:
这里,我们并没有正确地指定参数名type,函数却可以把unknown传递给参数type,并且返回输出15。
请发表评论