[R] saving variables created by functions in the workspace

Gabor Grothendieck ggrothendieck at myway.com
Sat Feb 21 14:47:54 CET 2004



sinx is local to your function so it is only known within
the function, not outside it.  The reason its like that is
to promote modularity.

You can do one of the following:

1. Return it explicitly from your function:
       plotsinx <- function(x) { sinx <- sin(x); plot(sinx); sinx }
Now call it like this:
       sinx <- plotsinx(x) 

2. Use assign and explicitly assign it in the global   
environment rather than the local environment of the function:       
   plotsinx <- function(x) { 
       assign("sinx",sin(x),.GlobalEnv)
       plot(sinx)
    }
See ?assign

3. Use <<- as in:
   plotsinx <- function(x) { 
       sinx <- sin(x)
       plot(sinx)
    }
If you use this one be sure that you don't nest the 
definition of plotsinx in another function since it actually
searches through the environments of the definition's
parents.  See ?"<<-"

If you just want to look at it but not manipulate it outside
of the function you could try these:

4. Use print.   See ?print

   plotsinx <- function(x) { 
       sinx <- sin(x)
       print(sinx)
       plot(sinx)
    }


5. Use debug
     debug(plotsinx)
   Now when you run the function you can step through it line
   by line displaying each of the local variables if you like.
   See ?debug

Date:   Sat, 21 Feb 2004 11:07:00 +0100 (CET) 
From:   =?iso-8859-1?q?Fulvio=20Copex?= <copellifulvio at yahoo.it>
To:   <r-help at stat.math.ethz.ch> 
Subject:   [R] saving variables created by functions in the workspace  

 
Hello ,

just a simple question from a beginner:

I write the function:
plotsinx <- function()
{
x<-seq(0,2*pi,0.01)
sinx<-sin(x)
plot(sinx)
}
I recall it:
plotsinx()
and the plot works properly.
but then in the workspace if I want to look at the
values of sinx the following error is displayed:
Error: Object "sinx" not found.
How to save the variables created by the function on
the workspace?
Thank you very much, it seems to be very trivial...
Copex.




More information about the R-help mailing list