【发布时间】:2015-01-01 07:32:11
【问题描述】:
我正在阅读Hadley Wickham's Advanced R book,目前正在阅读“环境”一章
它说除了 emptyenv 之外的每个环境都有一个父环境。我需要帮助来理解一些可以让我明白这一点的东西——也许我只是把它复杂化了或者误解了变量在 R 中是如何工作的。
假设我定义了自己的环境:myenv <- new.env()
现在,如果我做一个简单的parent.env(myenv),我会得到预期的全局环境。
但是现在当我附加这个环境时会发生什么,导致它进入全局环境上方的搜索路径?attach(myenv)
现在,如果我使用search() 查看搜索路径,我可以看到myenv 是.GlobalEnv 的父级。我还可以使用返回myenv 的parent.env(globalenv()) 来验证这一点。如果我运行parent.env(parent.env(globalenv())),那么我会得到tools:rstudio,这是有道理的。
但是如果我尝试直接使用parent.env(myenv) 查看myenv 的父级,我会得到全局环境.为了得到我期望的结果 (tools:rstudio),我需要手动将我的环境转换为一个环境:parent.env(as.environment("myenv")) 返回tools:rstudio。
那么哪个是正确的? myenv 的父环境是什么?
我知道我可以使用parent.env<- 更改环境的父级,但是如果我像上面的示例一样附加它,我不明白什么才是真正的父级
【问题讨论】:
标签: r