integrate() (PR#1755)

Duncan Murdoch dmurdoch@pair.com
Sun, 07 Jul 2002 22:46:51 -0400


>This simply means that the function has to be properly vectorized. 

By the way, sometimes vectorizing is ugly.  Here's a simple function
that should vectorize any function that's designed to take a scalar as
the first argument.

vectorize <- function (f) 
{
  function(x,...)
  { 
     result <- rep(f(x[1],...),length(x))  # this sets type and length
     for (i in 2:length(x)) result[i] <- f(x[i],...)
     result
  }
}

It's slow, and it's ugly, but it lets the original failing example
work:

> integrate(function(x)1,0,1)
Error in integrate(function(x) 1, 0, 1) : evaluation of function gave
a result of wrong length
> integrate(vectorize(function(x)1),0,1)
1 with absolute error < 5.6e-15

Duncan Murdoch
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._