I have a function that creates an environment within it and i wish to assign that environment to the global environment. At present i do this by assigning the environment to globalenv()
as the final step -- as follows:
funfun <- function(inc = 1){
dataEnv <- new.env()
dataEnv$d1 <- 1 + inc
dataEnv$d2 <- 2 + inc
dataEnv$d3 <- 2 + inc
assign('dataEnv', dataEnv, envir = globalenv())
}
It feels like i should be able to do something to make dataEnv
persisit when the function funfun
ends (to save copying the environment at the end) however my attempts, such as dataEnv <- new.env(parent = globalenv())
, have not worked.
Why does it fail? Is this possible?
Also, what is the most efficient way of doing this?
My tables are very large at times, and the copying will become an issue as the project grows.
Your environment is not being destroyed when you exit the function. You just need to return a reference to it.
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)
Get some stuff out
head(myEnv$d3)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With