Return 父环境中的公式
Return formula in parent environment
如果我有一个 return 是 formula
的 R 函数,它会绑定到函数的 scope/environment。我可以在函数中做什么,以便 returned 公式没有这个环境属性?
例如,
myfun = function() {
model = y ~ 1
return(model)
}
结果:
> myfun()
# y ~ 1
# <environment: 0x000001ffd94eca50>
一种解决方案是在return之前修改属性:
myfun = function() {
model = y ~ 1
attr(model, ".Environment") = globalenv()
return(model)
}
但这看起来很老套,所以这真的是最好的方法吗?
我可能会使用父环境而不是全局环境
myfun <- function() {
model <- y ~ 1
environment(model) <- parent.frame()
return(model)
}
这将从您调用它的地方创建环境,如果您始终喜欢全局环境,位 globalenv()
也很好。
如果我有一个 return 是 formula
的 R 函数,它会绑定到函数的 scope/environment。我可以在函数中做什么,以便 returned 公式没有这个环境属性?
例如,
myfun = function() {
model = y ~ 1
return(model)
}
结果:
> myfun()
# y ~ 1
# <environment: 0x000001ffd94eca50>
一种解决方案是在return之前修改属性:
myfun = function() {
model = y ~ 1
attr(model, ".Environment") = globalenv()
return(model)
}
但这看起来很老套,所以这真的是最好的方法吗?
我可能会使用父环境而不是全局环境
myfun <- function() {
model <- y ~ 1
environment(model) <- parent.frame()
return(model)
}
这将从您调用它的地方创建环境,如果您始终喜欢全局环境,位 globalenv()
也很好。