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() 也很好。