[R] How to use current value of variable in function definition?

Mark Wardle mark at wardle.org
Thu Jul 2 22:02:17 CEST 2009


Hi.

I've stared at your code for a number of minutes and can't understand
what you're trying to achieve here. It looks as if you're fighting
scope - it may be worth refactoring your approach to simplify matters.
Otherwise, it sounds like a recipe for obfuscation! What are you
trying to do really?

b/w

Mark

2009/7/2 Allan Engelhardt <allane at cybaea.com>:
> Must be the heat or something but I can't get my brain into gear and figure
> out how to get something like
>
> if (1) { c <- 1; foo <- function () print(c); }
> c <- 2
> foo()
>
> to print 1, not 2.  (The real life example is a little more complex, but you
> get the idea.  I don't want the variable c in the function definition, I
> want its value at that time.)
>
> The only thing I have been able to come up with is something like
>
> if (1) foo <- (function () { c <- 1; return(function () print(c)) })()
> c <- 2
> foo()
> # [1] 1
>
> but that just hurts.  Please make the pain go away.
>
> Can someone wake up my brain?
>
> Allan.
>
> ______________________________________________
> R-help at 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.
>
>



-- 
Dr. Mark Wardle
Specialist registrar, Neurology
Cardiff, UK




More information about the R-help mailing list