Message-ID: <4961F03F.8060304@stats.uwo.ca>
Date: 2009-01-05T11:34:23Z
From: Duncan Murdoch
Subject: eval using a environment X but resultsin .GlobalEnv
In-Reply-To: <1e7471d50901042252j668ae340y356ca03b71563db@mail.gmail.com>
Saptarshi Guha wrote:
> Hello,
> Suppose I have an expression, E, which accesses some variables present
> in an environment V.
> I do this via
> eval(E,envir=V)
> however all assignments end up in V. I would like the results of
> assignments in E to end up in the .GlobalEnv ? Or at least the calling
> environment.
> Is there a quick way to this instead of iterating over all objects E
> and assigning into .GlobalEnv?
If you don't have control of E to make the changes Gabor suggested, then
I don't think you can do it without iteration. But you can leave V
alone as follows:
V2 <- new.env(parent=V)
eval(E, envir=V2) # Assignments happen in V2
Now iterate over V2 to move things into .GlobalEnv if you want, e.g.
names <- ls(V2, all=TRUE)
for (n in names) assign(n, get(n, envir=V2))
Duncan Murdoch