On 18/01/2012 1:51 PM, R. Michael Weylandt wrote:
Consider this example:

power<- function(n){
     function(x) x^n
} # Note that this function returns a function!

One bit of advice that may matter sometime: you should call force(n) to make sure it is evaluated before creating the new function. Otherwise you get embarrassing results like this:

> n <- 3
> cube <- power(n)
> n <- 2
> cube(2)
[1] 4

Due to lazy evaluation, the n isn't evaluated until after it got changed to 2. This version is safe:

power<- function(n){
    force(n)
    function(x) x^n
} # Note that this function returns a function!


Duncan Murdoch

cube<- power(3)

cube(2) # gives 8

That make sense?

Michael

On Wed, Jan 18, 2012 at 1:30 PM, statguy<marti...@mail.com>  wrote:
>  I would like to know if it is possible to make a function that defines a
>  variable in another function without setting that variable globally?
>
>  I would i.e. be able to define a variables value inside a function ("one
>  level above) which another function makes use of, without setting this
>  variable globally.
>
>  I have provided this very simple illustrating example.
>
>  test1=function(x)
>          {
>          x+y
>          }
>  test2=function(y1)
>          {
>          y=y1
>          test1(2,y1)
>          }
>
>  Running the second function results in an error:
>>  test2(1)
>  Error in test1(2) : object 'y' not found
>
>  I see 2 possible solutions to this, but neither of them is preferred in my
>  more complex situation:
>
>  1. Setting y<<-y_1 globally in test2-function
>  2. making test1 a function of both x and y.
>
>  Is there any other way to do this except from the 2 above? I hope someone
>  can help me with this.
>
>  --
>  View this message in context: 
http://r.789695.n4.nabble.com/How-to-define-a-variable-in-a-function-that-another-function-uses-without-using-global-variables-tp4307604p4307604.html
>  Sent from the R help mailing list archive at Nabble.com.
>
>  ______________________________________________
>  R-help@r-project.org mailing list
>  https://stat.ethz.ch/mailman/listinfo/r-help
>  PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>  and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to