[Rd] linking environments

Steven McKinney smckinney at bccrc.ca
Wed Mar 25 19:48:03 CET 2009


> 
> -----Original Message-----
> From: r-devel-bounces at r-project.org on behalf of Joerg Betzin
> Sent: Wed 3/25/2009 8:47 AM
> To: r-devel at r-project.org
> Subject: [Rd] linking environments
>  
> Dear R-helpers,
> 
> I try to use nested R-functions as follows:


Looks like a question for R-help, not R-devel.
It's better to post such questions to the
R-help at r-project.org mailing list.


> 
> 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"
> 

Why not pass the value of x from help1
to help2?

help1 <- function(){
        x <- 1
        help2(x)
}



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




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



(No compiling is involved.)

> 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 !

Is this a homework problem?

Some reading of 
?environment
will help answer this.

> 
> 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]]
> 



Steven McKinney, Ph.D.

Statistician
Molecular Oncology and Breast Cancer Program
British Columbia Cancer Research Centre

email: smckinney +at+ bccrc +dot+ ca

tel: 604-675-8000 x7561

BCCRC
Molecular Oncology
675 West 10th Ave, Floor 4
Vancouver B.C. 
V5Z 1L3
Canada



More information about the R-devel mailing list