Re: [R] R newbie...

From: Ted Harding <Ted.Harding_at_nessie.mcc.ac.uk>
Date: Wed 07 Dec 2005 - 05:25:55 EST


On 06-Dec-05 David Hajage wrote:
> Hello,
>
> I'm a new user...
>
> I have a function :
>
> calculate <- function(x,y)
> {
> z <- x + y
> }
> I would like to use the result (z) with another function :
>
> recalculate <- function(...)
> {
> a <- z^2
> }
>
> But R says that z does not exist...
>
> How can I use z in an another function ?
>
> Thank you for your answer...

With 'calculate' as written, z is "internal" to 'calculate' and is not visible from outside (and the internal assignment to z will not affact the value of a variable also called z outside the function). The simplest way to extract the calculated value is to "return" it from the function and assign it to z outside the function:

  calculate <- function(x,y)
    {

       return(x + y)
    }

  z<-calculate(x,y)

and then say

  a<-recalculate(z)

where, again, you need to "get a out of" the function, so

  recalculate <- function(...)
    {

       return(z^2)
    }

While it is possible to change the values of "external" variables from within functions, this is not a recommended way to proceed, since it depends on the named variable inside the function meaning the same as the variable with the same name outside the function. Since the purpose of defining functions is to have something which is re-usable in different contexts, it is generally desriable to make function definitions independent of the environment from which they may be called.

Hoping this helps,
Ted.



E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 094 0861
Date: 06-Dec-05                                       Time: 18:25:53
------------------------------ XFMail ------------------------------

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Dec 07 06:31:07 2005

This archive was generated by hypermail 2.1.8 : Wed 07 Dec 2005 - 09:36:58 EST