2.1.10 环境

Keywords:

Next: ,Previous: Dot-dot-dot,Up: Basic types

2.1.10 环境

环境可以简单地看作由两部分组成。一个是包含“符号-值”对集合的框架(frame),另一个是指向外围环境的指针(又称为(外围))(enclosure)。当 R 搜索一个符号的值时,框架将会被检查。如果找到了一个匹配的符号,它的值将会被返回。如果找不到,外围环境将会被访问并且重复这个过程。环境形成一个树形结构,而外围起到一个父节点的角色。环境的树结构的根部是一个空的环境,可以通过没有父节点的emptyenv() 访问。它是基本包环境的直接父节点(可以通过函数baseenv()访问)。以前, baseenv() 可以是 NULL,但从版本 2.3.0 开始,不赞成用 NULL 作为环境。

环境通过函数调用隐式创建,这些内容在Function objectsLexical environment部分将会描述。在这种情况下,环境含有函数的局部变量(包括参数),而它的外围是当前调用函数的环境。环境还可以直接通过 new.env 创建。一个环境的框架内容可以通过 lsgetassign 以及 evalevalq 访问和操作。

函数 parent.env 可以用于访问一个环境的外围。

和其它的 R 对象不一样,环境不是通过拷贝一份新的传递给函数或者用于赋值操作中。因此,如果你将一个的环境赋给好几个符号并且改变其中的一个,那么其它的也都会改变。特别是,把一个属性赋给一个环境会导致一些非常奇异的事情。

Hits:Loading...

special topic