[R] expression input to a function
Duncan Murdoch
murdoch.duncan at gmail.com
Wed May 4 14:13:57 CEST 2016
On 04/05/2016 7:11 AM, Naresh Gurbuxani wrote:
> I am trying to write a function, which can be made very general if one of the inputs can be an expression. How can this be done?
>
>
> For example, to find root of a function, I would like to say
>
> my.func <- function(x) {x^3 + 2 * (x^2) - 7}
>
> x.left <- 0
> x.right <- 2
> n.iterations <- 0
>
> find.root <- function(my.func, x.left, x.right) {
> # code here
> return(c(x.mid, n.iterations))
> }
>
> The above method clearly does not work.
You are taking the right approach. You can pass functions as arguments
to other functions; they are "first class objects". For example:
evaluate <- function(f, x) f(x)
evaluate(my.func, 3)
would give the same result as my.func(3).
For your find.root function, just write the search in find.root using
the name of the argument (which for didactic purposes I'd recommend be
different from the actual function name, but it'll be fine in practice).
It is also possible to pass expressions that aren't in functions, but it
gets tricky, and you shouldn't do that in your first attempt.
Duncan Murdoch
More information about the R-help
mailing list