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