R | 基础函数编写

自定义函数

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()括号内设置。

完。

你可能感兴趣的:(R | 基础函数编写)