Re: [R] Building the call of an arbitrary function

From: Duncan Murdoch <murdoch_at_stats.uwo.ca>
Date: Sun 17 Sep 2006 - 18:12:29 GMT

On 9/17/2006 12:36 PM, Vincent Goulet wrote:
> Hy all,
>
> Is there a direct way to build the complete function call of an arbitrary
> function?
>
> Here's what I want to do. A function will build a function which will itself
> call a probability density function for some law given in argument to the
> first function:
>

>> f("gamma", 1000)

>
> will return, say,
>
> function(x, shape, rate, scale = 1/rate)
> dgamma(x + 1000, shape, rate, scale = 1/rate)
>
> (Notice that the arguments of the output function are those of dgamma().)
>
> I tried all sorts of combinations of call(), formals(), args() et al. to no
> avail. But then, I avoided, so far, to build the whole thing as a character
> string. Would it be the only option?

No, do.call is what you want.

dgamma(x + 1000, shape, rate, scale = 1/rate)

is the same as

do.call("dgamma", list(x+1000, shape, rate, scale=1/rate))

But since you're going to have to look up the parameters that are appropriate to your target density (i.e. shape, rate, scale), I'm not sure how useful this will be. It might be easier just to code the call to dgamma directly.

Duncan Murdoch



R-help@stat.math.ethz.ch 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. Received on Mon Sep 18 04:30:24 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 20 Sep 2006 - 18:30:06 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.