上一讲通过三个简单的例子体验了一下如何在R中写函数,下面来详细学习有关R语言中函数的知识。
Functions in R
主要分三个部分来讲解函数:
- 编写函数所需的基础知识
- 相关语法作用域
- R语言作用域的规则
编写函数所需的基础知识
R语言通过function()
指令来命名和创建函数。首先要给函数赋值,也就是命名,然后在小括号中写入参数,最后再大括号中写入函数要执行的语句,其基本语法是:
f <- function(<arguments>){
## Do something interesting
}
同时在R中,你可以将函数作为参数传递给其他函数,即嵌套。
函数的返回值是函数执行部分中的最后一行表达式。
编写函数的过程中我们可以设置和命名参数,这些参数可以代表数值、矩阵、数据框或逻辑值等等。同时也可以设置一些具有缺省值(默认值)的参数。
- 形式参数(formal arguments)
形式参数是包含在函数定义里的参数。
formals()
会将一个函数作为输入(input),并返回函数所有的形式参数组成的列表。
在R中,不是所有命令都用到所用的形式参数。加入一个函数中设置了10个参数,但我们往往并不需要指定每个参数的值是啥,所以函数可以缺失某些参数。当没有明确赋值是,它的取值就是缺省值(默认值,default value)
- 匹配参数(argument matching)
可以根据位置或名称来匹配函数参数,这是编写和调用函数的关键。
以计算数据标准差的函数sd()
为例。
> data <- rnorm(100) ## 取100个符合正态分布的随机数
> sd(x = data) ## 给参数赋值 求标准差
[1] 1.035329
> sd(