# [R] A function as argument of another function

Martin Maechler maechler at stat.math.ethz.ch
Thu Apr 17 10:13:10 CEST 2003

```>>>>> "vito" == vito muggeo <vito.muggeo at giustizia.it>
>>>>>     on Thu, 17 Apr 2003 09:45:41 +0200 writes:

(MM: I've added " " around "<-" and empty lines:)

vito> Dear all,
vito> I would like to write a function like:

vito> myfun <- function(x,fn) {xx<-exp(x); x*fn(xx)}

vito> where fn is a symbolic description of any function
vito> with its argument to be specified. Therefore

vito> myfun(5,"2+0.3*y^2")
vito> should return 5*(2+0.3*exp(5)^2),

vito> myfun(5,"log(y)") should return 5*log(exp(5)) and so on.

vito> I tried with "expression" and others, but without
vito> success. How can I solve my problem?

As you say yourself in the subject, the argument must be a
*function*, not a string or an expression, e.g.,
function(y) y^2

is a function.  So,

myfun <- function(x,fn) { xx <- exp(x); x*fn(xx) }
myfun(5, function(y) 2+0.3*y^2)

gives 33049.7, as desired.

Regards,
Martin Maechler <maechler at stat.math.ethz.ch>	http://stat.ethz.ch/~maechler/

```