[R] how modify object in parent.env

Marc Schwartz MSchwartz at MedAnalytics.com
Wed Mar 9 01:03:45 CET 2005


On Tue, 2005-03-08 at 15:36 -0800, Vadim Ogranovich wrote:
> Hi,
>  
> Is it possible to modify an object in the parent.env (as opposed to
> re-bind)? Here is what I tried:
>  
> > x = 1:3
> # try to modify the first element of x from within a new environment
> > local(get("x", parent.env(environment()))[1] <- NA)
> Error in eval(expr, envir, enclos) : Target of assignment expands to
> non-language object
> 
> # On the other hand retrieval works just fine
> > local(get("x", parent.env(environment()))[1])
> [1] 1


You could try this:

> x <- 1:3

mod.x <- function(x)
{
  eval.parent(substitute(x[1] <- NA))
}

> x
[1] 1 2 3

> mod.x(x)

> x
[1] NA  2  3


See ?eval.parent for more information and variations on this.

HTH,

Marc Schwartz




More information about the R-help mailing list