Dear All - I'm trying to integrate the following function via nlsLM - and I think the problem is something to do with passing the correct arguments (error is given below) - any help gratefully appreciated - many thanks. library(minpack.lm) dOM <- function(x, mu = 0, sigma = 1, log = FALSE) { if (any(sigma < 0)) stop(paste("sigma must be positive", "\n", "")) loglik <- x*mu + log(sigma) + sigma*(1-exp(x*mu)) + log(mu) if(log==FALSE) ft <- exp(loglik) else ft <- loglik ft } vecA <- as.vector(seq(from = 1, to = 29, by = 1)) vecBy <- c(234, 255, 263, 276, 308, 329, 350, 345, 377, 391, 432, 474, 457, 483, 484, 510, 526, 492, 496, 481, 454, 447, 408, 379, 342, 284, 247, 207, 174) dataframeleft <- data.frame(vecA, vecBy) colnames(dataframeleft) <- c("vecA", "vecBy") OMPD <- nlsLM(vecBy ~ alpha*dOM(vecA, mu, sigma), data = dataframeleft, start = c(alpha = 59000, mu = 0.086, sigma = 0.0013), lower = c(0, 0, 0), upper = c(Inf, Inf, Inf), control = nls.lm.control(maxiter = 1024, factor 100, maxfev = 5000), trace = TRUE) omfunction <- function(mygrid, object) { predmyp1 <- predict(object = OMPD, x = mygrid, mu = mu, sigma = sigma) predmyp <- as.vector(as.numeric(predmyp1)) return(predmyp) } omfunction(mygrid) intom <- integrate(omfunction, object = OMPD, lower = 1, upper = 20) ## Error in integrate(omfunction, object = OMPD, lower = 1, upper = 20) : ## evaluation of function gave a result of wrong length