函数组成
函数有三个部分组成:
- 表达式 formals
- 主体 body
- 环境 envir
前两者都是显式的,而环境则是隐式的。
栗子如下:
f02 <- function(x, y) {
# A comment
x + y
}
formals(f02)
#> $x
#>
#>
#> $y
body(f02)
#> {
#> x + y
#> }
environment(f02)
#> <environment: R_GlobalEnv>
原始函数( Primitive functions)
这些函数直接由C 语言编写,在R 中被调用,比如:
> `+`
function (e1, e2) .Primitive("+")
> sum
function (..., na.rm = FALSE) .Primitive("sum")
因此它们的类型也有所不同,而如果尝试获得其元素的话,也是NULL:
函数调用
- 几种多个函数调用方法的对比
句法作用域
- R 会在层层作用域中的最近一层寻找与变量相同名称的变量
- 即使R 可以避免函数与变量重名的冲突,我们也要小心!
- 函数每一次运行都会刷新其内部的子环境
- 函数是动态寻找的,它会一直在作用域中查找,而不是在某个时间段锁定某个变量。