1.2 环境和变量搜索

Keywords:

Next: ,Previous: SEXPs,Up: R Internal Structures

1.2 环境和变量搜索

用户看到的`变量'(variables)是和`环境'中的对象绑定的符号。术语`环境'(environment)在R里面用的比较模糊,它要么表示单一的ENVSXP (一种符号-值对的成对列表)的架构,要么表示ENVSXP和一个闭包的架构。

`变量'还可以在附加的地方搜索。这种地方通常出现在代码的注释部分,叫着`用户数据库'(user databases)。在R的原始代码里面好像没有记录,但在RObjectTable包(http://www.omegahat.org/RObjectTables/)里面有所提及。

基础环境是特定的。有一种空的含有闭包的ENVSXP环境 R_EmptyEnv,但这种环境架构很少使用。不过,它的捆绑对象是全家符号表的一部分,而且这些对象是全家符号表中不是R_UnboundValue的符号。当 R 启动后,内置函数会在符号表中安装(通过C代码)。同时安装的还包括含有值得原始函数(primitive functions)和通过宏INTERNAL访问字段值的.Internal函数。然后,确定.Platform.Machine,在基本环境中导入基础包和进行系统检测。

环境架构(包括符号表)通常都会建立哈希函数,以便于快速查找(包括插入和删除)。

默认状态下,R含有一个可见`变量'(符号和它们的绑定物)的全局缓存(哈希过的)。is symbols and their bindings) which have been found, and this refers它仅仅指向标明参加当前活动的环境,该环境包括全局环境(即用户工作空间),基础环境和被attach的环境1。当一个环境无论attachdetach,它的符号的名字都会从缓存中去掉。只有全局环境中搜索变量(可能作为递归搜索的一部分)的时候,缓存才会被使用。


Footnotes

[1] 注意,被绑定(attach)的列表或保留的数据映像(image)实际上创建一个环境然后附上这些列表和数据映像

Hits:Loading...

special topic