我正在尝试创建一个环境层次结构,其中我有一个主要环境,其中包含各种其他环境,然后可以包含其他环境(等等)。
我像这样创建环境及其子项:
parentEnv <- new.env()
childEnv <- new.env(parentEnv)
我们可以看到创建了父级和子级:
> childEnv
<environment: 0x000000000e811208>
> parentEnv
<environment: 0x000000000d9e2440>
但是,然后我检查孩子的父母,它告诉我它的 R_Global。(这实际上并不令人惊讶,因为我能够直接访问它)。new.env(parent)
不做我认为的事情?
> parent.env(childEnv)
<environment: R_GlobalEnv>
没关系,然后我将我孩子的父母设置为parent.env(childEnv) <- parentEnv
(尽管 R 文档说这是“危险的”并且可能会被弃用,但我还是想尝试一下)。
parent.env(childEnv) <- parentEnv
> childEnv
<environment: 0x000000000e811208>
> parent.env(childEnv)
<environment: 0x000000000d9e2440>
我们现在看到孩子的父母是parentEnv!一切都应该很棒,对吧……?
> parentEnv$childEnv
NULL
> with(parentEnv, childEnv)
<environment: 0x000000000e811208>
我无法使用 $ 访问它。虽然我可以使用'with'表示法。这里发生了什么?我不明白环境在 R 中是如何工作的?