Mark Wardle wrote:
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?

Not really obfuscation, there are legitimate reasons to want this sort of behaviour. See demo(scoping) for a related example

I think the canonical way is to define the function in an environment that contains c

foo <- local({c <- 1 ; function() print(c) })

which really isn't much different from what his "painful" code is doing.

b/w

Mark

2009/7/2 Allan Engelhardt <[email protected]>:
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.

______________________________________________
[email protected] 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.







--
   O__  ---- Peter Dalgaard             Ă˜ster Farimagsgade 5, Entr.B
  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark      Ph:  (+45) 35327918
~~~~~~~~~~ - ([email protected])              FAX: (+45) 35327907

______________________________________________
[email protected] 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