[R] recursive functions and global variables

Thomas Lumley tlumley at u.washington.edu
Sun Oct 14 20:49:49 CEST 2001


On Sun, 14 Oct 2001, David A Richmond wrote:

> Hi,
> 	I am trying to write a recursive routine which passes some
> variables through the function calls but also refers to some global
> variables. I need the global variables because they are very big (n by n
> matrices where n is <= 1000) and I don't have the huge amount of memory
> needed to spawn dozens of copies of these matrices. The problem seems to
> be that while variables in the root environment of R are global, variables
> created in a function func1() are not available in functions called by
> func1(). (See the example below.) So I need a way to create some variables
> at the root level of a function that are available at any level
> 'underneath' the base function level. Note also that I want to be able to
> modify elements that are at a higher level as well.
>

You probably want to use a named environment. There's an example in the
`Programmer's Niche' section of the 2nd R newsletter, on the R home page.

Basically, you create an environment like

   storage<-new.env()

and pass it down through your functions. You can then use get() and
assign() to retrieve and modify objects in this environment.

This is often the R way to handle issues for which S-PLUS programmers
would use 'frame 0' and 'frame 1'.


	-thomas

Thomas Lumley			Asst. Professor, Biostatistics
tlumley at u.washington.edu	University of Washington, Seattle

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list