[R] Building the call of an arbitrary function

Duncan Murdoch murdoch at stats.uwo.ca
Sun Sep 17 20:12:29 CEST 2006


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



More information about the R-help mailing list