我有一个在其中创建环境的函数,我希望将该环境分配给全局环境。目前,我通过将环境分配给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
持久存在(以便最后保存复制环境),但是我的尝试(例如dataEnv <- new.env(parent = globalenv())
)没有奏效。为什么会失败?这可能吗?
另外,最有效的方法是什么?
我的表有时很大,随着项目的发展,复制将成为一个问题。
最佳答案
退出功能不会破坏您的环境。您只需要返回对它的引用。
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)