[R] select one function from two of them in another function

Bert Gunter gunter.berton at gene.com
Thu Aug 27 23:50:57 CEST 2009


While correct, the solution below is unnecessarily complicated. Functions
can be passed around and used as arguments just like any other objects.
Hence (using Jim's example):

> test3 <- function(func)func
> test3(test1)()
[1] 1
> test3(test2)()
[1] 2

Of course. arguments can be entered in the parentheses as usual:

> test3(function(x)x^2) (5)
[1] 25


Bert Gunter
Genentech Nonclinical Biostatisics

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On
Behalf Of jim holtman
Sent: Thursday, August 27, 2009 1:58 PM
To: SH.Chou
Cc: r-help at r-project.org
Subject: Re: [R] select one function from two of them in another function

Is this what you want -- this returns a function that you can then call:

 test1 <- function() 1
test2 <- function() 2
> test3 <- function(func='test1'){  # return the function to call
+     if (func == 'test1') return(test1)
+     return(test2)
+ }
>
> # test it
> test3()()  # default -- notice the second set of parens
[1] 1
>
> test3('test1')()
[1] 1
>
> test3('test2')()
[1] 2
>
>
>


On Thu, Aug 27, 2009 at 4:41 PM, SH.Chou<cls3415 at gmail.com> wrote:
> Hi all,      I have two functions called test1() and test2(). Now how do I
> select one of them in test3()??
>
> Say
>  test3<-function(func="test1"){
>        if (func=="test1"){
>               now.func<-test1()
>       }
>       else now.func<-test2()
>  }
>
> I know this function I wrote does not right. Do anyone can tell me how to
do
> that for real?
>
> Thanks a million
>
> S.H.
>
> --
> =====================================
> Shih-Hsiung, Chou
> Department of Industrial Manufacturing
> and Systems Engineering
> Kansas State University
>
>
>
> --
> =====================================
> Shih-Hsiung, Chou
> Department of Industrial Manufacturing
> and Systems Engineering
> Kansas State University
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?

______________________________________________
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.




More information about the R-help mailing list