Bill and Brian, Thank you both for the finding my error. force() appears to do the trick.
Thanks again, James On Mon, Mar 12, 2012 at 1:09 PM, William Dunlap <wdun...@tibco.com> wrote: > I think that adding a force(i) to your inner function should fix things up. > > z <- mapply(assign, > + c("half", "third", "quarter"), > + lapply(2:4, function(i) { > + force(i) > + function(x) divide(x, i)}), > + pos = 1) > > half(10) > [1] 5 > > third(10) > [1] 3.333333 > > quarter(10) > [1] 2.5 > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > >> -----Original Message----- >> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On >> Behalf >> Of J Toll >> Sent: Monday, March 12, 2012 10:47 AM >> To: r-help >> Subject: [R] mapply & assign to generate functions >> >> Hi, >> >> I have a problem that I'm finding a bit tricky. I'm trying to use >> mapply and assign to generate curried functions. For example, if I >> have the function divide >> >> divide <- function(x, y) { >> x / y >> } >> >> And I want the end result to be functionally equivalent to: >> half <- function(x) divide(x, 2) >> third <- function(x) divide(x, 3) >> quarter <- function(x) divide(x, 4) >> >> But I want to do it using mapply and assign: >> mapply(assign, >> c("half", "third", "quarter"), >> lapply(2:4, function(i) {function(x) divide(x, i)}), >> pos = 1) >> >> The problem is in the third line. I end up with 3 functions that are >> all functionally equivalent to quarter(). Any suggestions on how to >> get this to work properly. >> >> Thanks. >> >> >> James ______________________________________________ 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.