Creates a new environment, evaluates an expression therein, and returns the environment.

env(..., hash=FALSE, parent=parent.frame(), size=29L)

Arguments

...

Arguments passed to evalq(), particularly a expression to be evaluated inside the newly created environment.

hash, parent, size

Arguments passed to new.env().

Value

Returns an environment.

Author

Henrik Bengtsson

See also

Internally new.env() and evalq() are used.

References

[1] R-devel thread 'Create an environment and assign objects to it in one go?' on March 9-10, 2011.

Examples

x <- list();

x$case1 <- env({
 # Cut'n'pasted from elsewhere
 a <- 1;
 b <- 2;
});

x$case2 <- env({
 # Cut'n'pasted from elsewhere
 foo <- function(x) x^2;
 a <- foo(2);
 b <- 1;
 rm(foo); # Not needed anymore
});

# Turn into a list of lists
x <- lapply(x, FUN=as.list);

str(x);
#> List of 2
#>  $ case1:List of 2
#>   ..$ b: num 2
#>   ..$ a: num 1
#>  $ case2:List of 2
#>   ..$ b: num 1
#>   ..$ a: num 4