On Sun, Nov 28, 2010 at 5:53 AM, Ira Sharenow <irasharenow...@yahoo.com> wrote:
> Hi. I am new to R and facing a problem that I cannot solve.
>
> I am writing some basic functions. Then I would like to have a master 
> function that allows me to call one of the functions which I created, but I 
> cannot figure out how to do so.
>
> Below is an example. The functions rnormIra and runifIra both seem to work 
> fine. I do not get an error message when entering the definition of the 
> master function randomIra; however, it fails when I use it to call another 
> function.
>
> rnormIra = function(n, mean) {
>  return(rnorm(n,mean,1))
> }
> rnormIra(10,100) #works fine
>
> runifIra = function(n,min,max) {
>  return(runif(n,min,max))
> }
> runifIra(5,20,30) #works fine
>
> randomIra = function(f, ...) {
>  if(f == rnormIra) {
>   return(rnormIra(n,mean))
>  }
>  else {
>        return(runifIra(n,min,max))
>  }
> } #no error messages
>
> randomIra(rnormIra, n = 5, mean = 20) #FAILS
> randomIra("runifIra", n = 5, min = 10, max = 25) #FAILS
>
> do.call(randomIra,list("rnormIra",5,20)) #FAILS
>

Try this:

randomIra <- function(f, ...) if (identical(f, rnormIra))
rnormIra(...) else runifIra(...)

-- 
Statistics & Software Consulting
GKX Group, GKX Associates Inc.
tel: 1-877-GKX-GROUP
email: ggrothendieck at gmail.com

______________________________________________
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