函数在运行时,函数所创建的任何对象以及参数会以对象的形式存储于运行时环境,参数的名称就是新对象的名称,新对象的值就是用户输入的参数值。

调用函数时的活动环境又可以成为调用环境(calling environment)。
R运行时需要调动一些对象,通常来说这些对象都是内部定义的参数,按照作用域规则,R会先从运行时环境搜索,然后父环境,并依次向上检索,而内部参数在运行时环境就可以搜索到。
函数运行后的结果会返回到调用环境,如果将函数的运行结果赋值给某个对象,那么该对象会存储在调用环境中。
函数中的对象,如果是在全局环境定义的,那么函数运行时就会在全局环境中搜索到原对象;如果是在函数内部定义的,那么就会在运行时环境搜索到该对象副本。
这个概念有些难理解,能不能理解成,函数运行时,运行时环境相当父环境的一个拷贝环境,将父环境的对象拷贝到运行时环境中进行一系列运算然后返回结果,不管在运行时环境对这些拷贝对象做如何的更改,父环境中的原对象都不会发生变化。这就类似于PS中新建一个拷贝图层,为了不改变原图层,在复制图层中进行修图,最终要的是拷贝图层呈现的结果。


网友评论