0%

R-函数编写基础

R里面的函数定义方法

自定义函数

R语言中有两个重要的组成,一是变量,用于存储数据;二是函数,用于操作数据。

函数的组成离不开三个部分:函数名、程序主体以及参数集合。

例如,我编写了如下一个掷骰子的函数,函数名为roll,包含两个参数x, size,且size是默认参数。其中sample函数能够从“x”中随机取样(大小为“size”),而“replace” 参数是定取样方式为可放回取样还是不可放回取样。最后,函数返回最后一行代码的结果,在该函数中,返回所有骰子的和。

1
2
3
4
5
6
7
8
roll <- function(x, size = 1){
dic <- sample(x, size, replace = T)
sum(dic)
}
> roll(1:6) #一个6面骰子
[1] 5
> roll(1:6, size = 3) #三个6面骰子
[1] 11

值得注意的是,自定义函数的默认参数的设定要在function()括号内设置,而非在函数主体内部设置,可见如下例子:

1
2
3
4
5
6
7
8
9
10
roll <- function(x, size){
dic <- sample(x, size = 1, replace = T)
sum(dic)
}

##在sample函数内设定size=1后,无论传入的size是多少都默认为“1”了。
> roll(1:6, size = 3)
[1] 2
> roll(1:6, size = 1000)
[1] 2

这是由于roll()函数定义的抽样大小参数size没有传给执行抽样的函数sample(),导致无论我们设定roll()size为多少都不能改变返回样本的个数。

所以,如果函数中定义的某些参数是需要用户传入,切记这个参数在函数内部被使用了。

反之,如果我们希望函数的一些参数是不需要被用户更改的,例如该例中的是否执行有放回抽样replace=TRUE,那么我们可以只在函数内部的执行函数中设置一个默认值。

完。