自定义函数
R语言中有两个重要的组成,一是变量,用于存储数据;二是函数,用于操作数据。函数的组成离不开三个部分:函数名、程序主体以及参数集合。
例如,我编写了如下一个掷骰子的函数,函数名为roll
,包含两个参数x
, size
,且size
是默认参数。其中sample
函数能够从“x”中随机取样(大小为“size”),而“replace” 参数是定取样方式为可放回取样还是不可放回取样。最后,函数返回最后一行代码的结果,在该函数中,返回所有骰子的和。
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()
括号内设置,而非在函数主体内部设置,可见如下例子:
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
这很可能是因为每次执行函数时,都是在函数主体中一行行运行的,在自定义函数中调用size
的赋值会在运行时被sample
函数内的赋值覆盖了。因此还是尽量避免在函数的主体中对所需要使用的参数赋值,而应当在function()
括号内设置。
完。
网友评论