如果我有两个使用相同变量名的嵌套环境,我将如何获取外部环境的值?
我很难找出实现这一点的正确方法。我尝试了evalparent.frame(x)
和内部的一些变体。sys.frame(x)
任何建议,将不胜感激。
例子:
outerFunc <- function() {
obj <- "Outer Object"
innerFunc()
}
innerFunc <- function() {
# A local variable with same name is created
obj <- "Inner Object"
# would like to grab the value of obj from the outer environment
obj.callingFunc <- eval(obj, envir=sys.frame(-1))
cat(obj.callingFunc) # gives "Inner Object" instead of "Outer Object"
}
> outerFunc()
Inner Object
在这种特定情况下,我无法使用明显的解决方案(显式传递obj
。使用不同的变量名等)。
编辑
检查下面@GregSnow 和@Dwin 的答案
# THESE WORK
eval(quote(obj), envir=parent.frame()) # equivalent to evalq(obj, envir=parent.frame())
get("obj", envir=parent.frame())
# THESE DO *NOT* WORK
eval("obj", envir=parent.frame())
get(quote(obj), envir=parent.frame())
关于引用get()
vs的影响有什么想法eval()
吗?