往往是父母的环境is全球环境。
但有时并非如此。例如在函数内的函数中,或者在错误函数中tryCatch()
.
严格来说,确实<<-
分配给全局环境,还是简单地分配给父环境?
试试看:
env = new.env()
env2 = new.env(parent = env)
local(x <<- 42, env2)
ls(env)
# character(0)
ls()
# [1] "env" "env2" "x"
But:
env$x = 1
local(x <<- 2, env2)
env$x
# [1] 2
… so <<-
does沿着整个父环境链向上走,直到找到给定名称的现有对象并替换它。然而,如果它没有找到任何这样的对象,它会创建一个新对象.GlobalEnv
.
(文档 https://stat.ethz.ch/R-manual/R-devel/library/base/html/assignOps.html状态大致相同。但在这种情况下,没有什么比通过实验来获得更好的理解更好的了。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)