函数构成
先前提到过,一个自定义R函数由三个部分组成:
• 函数体body(),即要函数定义内部要执行的代码;
• formals(),即函数的形式参数表以及可能存在的缺省值;
• environment(),是函数定义时所处的环境, 这会影响到参数表中缺省值与函数体中非局部变量的的查找。
my_fn = function(x,y=100) x+y
environment(my_fn)
<environment: R_GlobalEnv>
body(my_f)
{
x * 3
}
body(my_fn)
x + y
formals(my_fn)
y
[1] 100
R 的环境
“环境”是R语言比较复杂的概念, 对于没有嵌套定义在函数内的函数, 环境一般是R的全局工作空间(全局环境); 嵌套定义的函数则会有一个私有的环境, 而且对于利用“函数工厂”生成的函数, 还可以将其私有环境与函数对象一起保存下来, 生成带有状态的函数。
> my_f = function() my_local = function() 5
> a = my_f()
> a
function() 5
<environment: 0x7facc0191120>