有效地将环境从内部功能转移到全球环境

时间:2014-01-17 03:50:29

标签: r environment

我有一个在其中创建环境的功能,我希望将该环境分配给全局环境。目前,我通过将环境分配到globalenv()作为最后一步来完成此操作 - 如下所示:

funfun <- function(inc = 1){
    dataEnv <- new.env()
    dataEnv$d1 <- 1 + inc
    dataEnv$d2 <- 2 + inc
    dataEnv$d3 <- 2 + inc
    assign('dataEnv', dataEnv, envir = globalenv())
}

当函数dataEnv结束时(为了保存最后复制环境),感觉我应该能够做一些事情来funfun persisit但是我的尝试,例如{{1} ,没有工作。

为什么会失败?这可能吗?

此外,最有效的方法是什么?

我的表有时很大,随着项目的发展,复制将成为一个问题。

2 个答案:

答案 0 :(得分:5)

退出该功能时,您的环境未被销毁。你只需要返回一个引用。

funfun <- function(inc = 1){
  dataEnv <- new.env(parent=globalenv())
  dataEnv$d1 <- 1 + inc
  dataEnv$d2 <- 2 + inc
  dataEnv$d3 <- rnorm(10000)
  return(dataEnv)
}


myEnv <- funfun()
object.size(myEnv)

获取一些东西

head(myEnv$d3)

答案 1 :(得分:-1)

通常当我想将某些东西分配给全球环境时,我就是

varname <<- value