我有一个在其中创建环境的功能,我希望将该环境分配给全局环境。目前,我通过将环境分配到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} ,没有工作。
为什么会失败?这可能吗?
此外,最有效的方法是什么?
我的表有时很大,随着项目的发展,复制将成为一个问题。
答案 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