[R] eval using a environment X but resultsin .GlobalEnv

Duncan Murdoch murdoch at stats.uwo.ca
Mon Jan 5 12:34:23 CET 2009


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




More information about the R-help mailing list