
Hi Philippe, thanks for the suggestion - for my smaller problems I find that closures are quicker to define and deploy. At larger scales, I've implemented S4 objects with methods and attributes - though while elegant, I find that OO (apart from what's built-in) adds significant biolerplate in defining classes, so try to avoid it when I can... but I don't know much about the proto package except that it loads with gsubfn() - might look into it. Thanks!Stephen

> Date: Thu, 26 Aug 2010 06:51:50 +0200
> From: phgrosjean@sciviews.org
> To: obsessively@hotmail.com
> CC: ggrothendieck@gmail.com; r-help@r-project.org
> Subject: Re: [R] list of closures
> 
> Unless for learning R, you should really consider R.oo or proto packages 
> that may be more convenient for you (but you don't provide enough 
> context to tell).
> Best,
> 
> Philippe
> 
> On 26/08/10 06:28, Gabor Grothendieck wrote:
> > On Thu, Aug 26, 2010 at 12:04 AM, Stephen T.<obsessively@hotmail.com>  wrote:
> >>
> >> Hi, I wanted to create a list of closures. When I use Map(), mapply(), lapply(), etc., to create this list, it appears that the wrong arguments are being passed to the main function. For example:
> >> Main function:
> >>> adder<- function(x) function(y) x + y
> >> Creating list of closures with Map():
> >>> plus<- Map(adder,c(one=1,two=2))>  plus$one(1)[1] 3>  plus$two(1)[1] 3
> >> Examining what value was bound to "x":
> >>> Map(function(fn) get("x",environment(fn)),plus)$one[1] 2$two[1] 2
> >>
> >> This is what I had expected:
> >>> plus<- list(one=adder(1),two=adder(2))>  plus$one(1)[1] 2>  plus$two(1)[1] 3
> >>> Map(function(fn) get("x",environment(fn)),plus)$one[1] 1$two[1] 2
> >>
> >> Anyone know what's going on? Thanks much!
> >
> > R uses lazy evaluation of function arguments.  Try forcing x:
> >
> >> adder<- function(x) { force(x); function(y) x + y }
> >> plus<- Map(adder,c(one=1,two=2))
> >> plus$one(1)
> > [1] 2
> >> plus$two(1)
> > [1] 3
> >
> > ______________________________________________
> > 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.
> >
> >
 		 	   		  
	[[alternative HTML version deleted]]

