[R] R object as a function

Duncan Murdoch murdoch at stats.uwo.ca
Tue Jan 22 12:52:48 CET 2008


On 22/01/2008 5:30 AM, Thomas Steiner wrote:
> I want to use a function as an argument to ingtegrate it twice.
> See the following (senseless) example of a double integration:
> 
> test<-function(sf,lo,up,rest) {
>   innerFkn<-function(sf,lo) {
>     inte=integrate(f=sf,lower=lo,upper=4)
>     return( inte$value )
>   }
>   integral=integrate(f=innerFkn,lower=1,upper=2,sf=sf,lo=lo,up=up)
>   return( integral$vlaue+rest )
> }
> test(sf=stepfun(c(0,1),c(2,-1,3)),lo=0,up=2,rest=12)
> 
> Why isn't it possible to define the "innerFkn" inside "test"?

It is possible, but it needs to take arguments in the order that 
integrate expects, i.e. the first argument needs to be the values at 
which it will be evaluated.  You don't specify any "x" value.

The other problem is that integrate is not vectorized, it can only take 
scalar values for lower and upper, so you'll need a loop within innerFkn 
to do the integral over the values being passed in.

Duncan Murdoch

> "sf" is a stepfun, but it should possibly be any function.
> How can I define some R object like a stepfun (depending on variables)
> which can be evaluated like a function at some "lo"?
> Thanks for help,
> Thomas
> 
> ______________________________________________
> 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