函数构成

先前提到过,一个自定义R函数由三个部分组成:

• 函数体body(),即要函数定义内部要执行的代码;

• formals(),即函数的形式参数表以及可能存在的缺省值;

• environment(),是函数定义时所处的环境, 这会影响到参数表中缺省值与函数体中非局部变量的的查找。

  1. my_fn = function(x,y=100) x+y
  2. environment(my_fn)
  3. <environment: R_GlobalEnv>
  4. body(my_f)
  5. {
  6. x * 3
  7. }
  8. body(my_fn)
  9. x + y
  10. formals(my_fn)
  11. y
  12. [1] 100

R 的环境

“环境”是R语言比较复杂的概念, 对于没有嵌套定义在函数内的函数, 环境一般是R的全局工作空间(全局环境); 嵌套定义的函数则会有一个私有的环境, 而且对于利用“函数工厂”生成的函数, 还可以将其私有环境与函数对象一起保存下来, 生成带有状态的函数。

  1. > my_f = function() my_local = function() 5
  2. > a = my_f()
  3. > a
  4. function() 5
  5. <environment: 0x7facc0191120>