Re: [R] Two functions as parametrs of a function.

From: Duncan Murdoch <murdoch.duncan_at_gmail.com>
Date: Thu, 07 Apr 2011 08:04:02 -0400

On 07/04/2011 7:45 AM, Kenneth Roy Cabrera Torres wrote:
> Hi R users:
>
> I'm trying to make a function where two of the parameters are
> functions, but I don't know how to put each set of parameters for
> each function.
>
> What am I missing?
>
> I try this code:
>
> f2<-function(n=2,nsim=100,fun1=rnorm,par1=list(),fun2=rnorm,par2=list()){
> force(fun1)
> force(fun2)
> force(n)
> p1<-unlist(par1)
> p2<-unlist(par2)

You don't want to unlist those. Leave them as lists, and use the do.call() function for the calls. For example,

localfun1 <- function() do.call(fun1, c(list(n), par1))

> force(p1)
> force(p2)

Calling force() is only useful for arguments to your function: it kicks the evaluator, so it's not so lazy. Since p1 and p2 were calculated earlier, there's no need to force them. You might need to force n, since it is only used in the localfun1 and localfun2 calls, and if the argument to f2 changes before you make those calls, the wrong value will be used. That's pretty unlikely with your code, but since fun1 and fun2 can do anything, it's safest to fix the value of n before you call them. The same argument applies to fun1 and fun2 themselves.

Duncan Murdoch

> localfun1<- function() fun1(n, p1)
> localfun2<- function() fun2(n, p2)
> vp<-replicate(nsim,t.test(localfun1(), localfun2())$p.value)
> return(vp)
> }
>
> f2(fun1=rbeta,par1=list(shape1=2,shape2=2),fun2=rbeta,par2=list(shape1=1,shape2=2))
>
> Thank you for your help.
>
> Kenneth
>
> ______________________________________________
> R-help_at_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_at_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. Received on Thu 07 Apr 2011 - 12:11:34 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 07 Apr 2011 - 14:30:27 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.

list of date sections of archive