[R] generate a series of fucntion
Richard A. O'Keefe
ok at cs.otago.ac.nz
Tue Jul 22 02:22:36 CEST 2003
ximing wu <xiwu at uoguelph.ca> wrote:
> I want to generate a large amount of functions,
>
> say f=function(x,t) exp(-t[1]-t[2]*g_1(x)-t[3]*g_2(1+x))
>
> where g_1(x) and g_2(x) are from a long list of moments, such
> as x, x^2,
> log(x), log(1+x) .. and so on.
>
> Any suggestions on how to do this efficiently?
Unfortunately, outer() doesn't like function elements.
Let's suppose you have vectors g.1[1:n] and g.2[1:n],
and that you want to construct a list f[1:n] of functions.
f <- lapply(1:n, function(i) {
p <- g.1[i]
q <- g.2[i]
function (x, t) exp(-t[1] - t[2]*p(x) - t[3]*q(x))
})
will make a list of n functions. Note that the function passed to lappy()
returns a function. In R, it returns a *different* function each time,
and each of these points to an environment with its own copy of p and q.
More information about the R-help
mailing list