[Rd] linking environments

Duncan Murdoch murdoch at stats.uwo.ca
Wed Mar 25 19:41:00 CET 2009


On 3/25/2009 11:47 AM, Joerg Betzin wrote:
> Dear R-helpers,
> 
> I try to use nested R-functions as follows:

You didn't use nested functions.  They would look like this:

  help1 <- function(){
      help2 <- function(){
          if (x == 1)
                  cat("Hello world x = 1")
      }

      x <- 1
      help2()
  }

Because help2 is now nested within help1, it can see all the local 
variables in help1, so things work with it done this way.

There are tricks to define help2 outside of help1 but allow it to see 
the variables within there, but I'd keep it simple and avoid them.

Duncan Murdoch

> 
> help1 = function(){
>         x = 1
>         help2()
> }
> 
> with
> 
> help2 = function(){
>         if (x == 1)
>                 cat("Hello world x = 1")
> }
> 
> If I compile these functions and run help1()
> an error message occurs
>         Fehler in help2() : objekt "x" nicht gefunden
> 
> in english "error in help2(): object "x" not found"
> 
> If I change help1 to
> 
> help1 = function(){
>         x <<- 1
>         help2()
> }
> 
> so that "x" is now defined at the global environment it works fine.
> But the problem is, now "x" is defined also outside of help1 and this is 
> not desired !
> 
> Is there any usable solution for this problem?
> But, the original problem is to assign new values for "x" in help1 inside 
> help2 !
> 
> Thanks in advance
>  
> Jörg Betzin
> ---------------------------------------------------
> Deutsches Zentrum für Altersfragen
> Manfred-von-Richthofen-Str. 2
> 12101 Berlin
> Tel. (030) 260740-20
> E-Mail: joerg.betzin at dza.de
> URL: http://www.dza.de
> ---------------------------------------------------
> 
> 	[[alternative HTML version deleted]]
> 
> 
> 
> ------------------------------------------------------------------------
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list