R语言中无参,有参及带默认值参数函数的定义方法

R语言中大量的包提供了丰富的函数可以帮助我们解决数据处理中的各种问题。但是有时,我们还需要根据自己的需求来编写自己的函数。

自定义函数概述

在R语言中,定义一个函数语法格式为:

functionname

expr

return (value)

其中,functionname为函数名称;arglist为参数列表,若函数不需要参数可以省略;expr是函数要实现的功能代码;value是函数的返回值,若无返回值,就不写return部分。

下面举几个例子来说明一下具体用法。

无参函数

print_someinfo

{

print("Welcome to 头条号 : 优美的代码")

}

将该函数保存到文件后,可以在R编辑器中,选中所有代码后,点击工具栏上的“运行当前行或所选代码”后,并在R控制台中输入:print_someinfo(),回车后,就可以看到运行的结果,如下图所示:

无参数函数

虽然这个函数没有参数,但在使用时,括号是不可以能省略的,即应输入:print_someinfo()。

带参数的函数

在大多数情况下,函数会根据用户传递的参数执行一定的功能,如求样本的均值,方差,全距等。这里以求出一个向量中的最大值为例来说明有参函数的定义方法,编写的程序代码如下图所示:

求向量中最大的元素

上图中的最后两行是使用该函数的一个例子,结果如下图所示:

执行结果

这里给出的算法并不完美,它只适用于2个或2个以上元素的情况,当为一个元素时会报错:

参数不合理会报错

原因是循环是从第2个元素开始,但参数中的向量却只有一个元素。读者可以对这个函数进行改造,让其也适用于只有一个元素的情况。

带默认值参数的函数

我们可以给函数中的参数一个默认值,当调用该函数时,若没有给该参数相应的值,函数就使用其提供的默认值来处理。下图所示的是求三数中的最大者。程序如下图所示:

求三个数的最大值

调用时,若n2不给具体的值,则其会使用默认值0来处理。下面几种格式都是合法的。

maxnum(1,2,3)

maxnum(1,n3=3)

maxnum(n1 = 1, n2 = 2, n3 = 4)

结果如下图所示:

默认值的参数执行情况

这个函数中参数n3必须使用参数名来调用,否则,会发生n3没有赋值的错误,如下图所示:

参数使用不合理时的错误

因为R按照给出的参数列表从左到右依次给每个参数赋值,如不用参数名,45会给了参数n2,造成没有默认值的参数n3没有赋值的错误。下图所示的做法会更加合理些:即将带默认值的参数都放在最后。

默认值的参数放在后面

希望你能喜欢本篇文章,也希望你能关注本号,本号将持续更新R语言方面的文章,内容由基本语法的使用到具体的数据分析应用。