hi bill: I understand what you're doing but, atleast for this case, I
checked and you don't need the force this one. it works without it. so, I
think the force requirement applies only when you're building them up with
the lapply. but definitely I'm opened to clarification. thanks.






On Thu, Jun 6, 2013 at 11:36 AM, William Dunlap <wdun...@tibco.com> wrote:

> Try the following:
>    generateABFunction <- function(a, b) {
>       force(a)
>       force(b)
>       function(x) a*x + b
>    }
>    f12 <- generateABFunction(1, 2)
>    f53 <- generateABFunction(5,6)
>    f12(10:12) # get 12, 13, 14
>    f53(10:12) # get 56, 61, 66
>
> See, e.g., yesterday's discussion under the subject
> "Trying to build up functions with its names by means of lapply"
> on why the force() calls are required.  Read up on R's environments
> to see why f12 and f53 look the same but act differently (hint:
> look at ls.str(environment(f12))).
>
> 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 Liviu Andronic
> > Sent: Thursday, June 06, 2013 8:00 AM
> > To: r-help@r-project.org Help
> > Subject: Re: [R] generate simple function with pre-defined constants
> >
> > On Thu, Jun 6, 2013 at 4:48 PM, Liviu Andronic <landronim...@gmail.com>
> wrote:
> > > Dear all,
> > > Given:
> > > a <- 2
> > > b <- 3
> > >
> > > I'd like to obtain the following function:
> > > f <- function(x) 2 + 3*x
> > >
> > > but when I do this:
> > > f <- function(x) a + b*x
> > > ##f
> > > ##function(x) a + b*x
> > >
> > > the 'a' and 'b' objects do not get evaluated to their constants. How
> > > could I do that?
> > >
> > I found one solution:
> > a <- 2
> > b <- 3
> > f <- eval(parse(text=paste("function(z)", a, "+ z * ", b)))
> > f
> > ##function(z) 2 + z *  3
> >
> > but I still have nightmares from:
> > > fortune("parse")
> >
> > If the answer is parse() you should usually rethink the question.
> >    -- Thomas Lumley
> >       R-help (February 2005)
> >
> > Is there a nicer way to approach this? Thanks,
> > Liviu
> >
> >
> > > Thanks,
> > > Liviu
> > >
> > >
> > > --
> > > Do you know how to read?
> > > http://www.alienetworks.com/srtest.cfm
> > > http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader
> > > Do you know how to write?
> > > http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail
> >
> >
> >
> > --
> > Do you know how to read?
> > http://www.alienetworks.com/srtest.cfm
> > http://goodies.xfce.org/projects/applications/xfce4-dict#speed-reader
> > Do you know how to write?
> > http://garbl.home.comcast.net/~garbl/stylemanual/e.htm#e-mail
> >
> > ______________________________________________
> > 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.
>

        [[alternative HTML version deleted]]

______________________________________________
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