Create an environment and assign objects to it in one go?
Hi,
thanks to both of you. My use case was actually to in-the-end create
a *list* in a cut'n'paste-friendly way, e.g.
env <- function(..., hash=FALSE, parent=parent.frame(), size=29L) {
envir <- new.env(hash=hash, parent=parent, size=size);
evalq(..., envir=envir);
? envir;
} # env()
x <- list();
x$case1 <- env({
# Cut'n'pasted from elsewhere
a <- 1;
b <- 2;
});
x$case2 <- env({
# Cut'n'pasted from elsewhere
a <- 3;
b <- 1;
});
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 3 /Henrik On Thu, Mar 10, 2011 at 5:53 AM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
On 3/10/11, Henrik Bengtsson <hb at biostat.ucsf.edu> wrote:
Hi,
I've just created:
newEnvEval <- function(..., hash=FALSE, parent=parent.frame(), size=29L) {
? envir <- new.env(hash=hash, parent=parent, size=size);
? evalq(..., envir=envir);
? envir;
} # newEnvEval()
so that I can create an environment and assign objects to it in one go, e.g.
env <- newEnvEval({ a <- 1; b <- 2; });
print(env$a);
Does this already exists somewhere?
/Henrik
You can do this:
? e <- as.environment(list(a = 1, b = 2))
? e$a; e$b
or since proto objects are environments (but the $ has slightly
different semantics when applied to functions):
? library(proto)
? p <- proto(a = 1, b = 2, expr = { c <- 3 })
? p$a; p$b; p$c
--
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel