Hola! It is somewhat inconvenient to use plot.function, when add=TRUE. The following (miniscule) change makes it behave better: plot.function <- function (fn, from , to, xlim = NULL, ...) { if (!is.null(xlim)) { if (missing(from)) from <- xlim[1] if (missing(to)) to <- xlim[2] } curve(fn, from, to, xlim = xlim, ...) } The only change is that the default arguments fro from and to are omitted. (curve() has better code to give sensible defaults) But this makes problems for curve when add=FALSE is used. The following miniscule changes to curve restores its behaviour when add=FALSE: (changes only local to the delay() expression) curve <- function (expr, from, to, n = 101, add = FALSE, type = "l", ylab = NULL, log = NULL, xlim = NULL, ...) { sexpr <- substitute(expr) if (is.name(sexpr)) { fcall <- paste(sexpr, "(x)") expr <- parse(text = fcall) if (is.null(ylab)) ylab <- fcall } else { if (!(is.call(sexpr) && match("x", all.vars(sexpr), nomatch 0))) stop("'expr' must be a function or an expression containing 'x'") expr <- sexpr if (is.null(ylab)) ylab <- deparse(sexpr) } lims <- if (is.null(xlim)) delay({ if (add) { pu <- par("usr")[1:2] } else pu <- c(0,1) if (par("xlog")) 10^pu else pu }, environment()) else xlim if (missing(from)) from <- lims[1] if (missing(to)) to <- lims[2] lg <- if (length(log)) log else paste(if (add && par("xlog")) "x", if (add && par("ylog")) "y", sep = "") x <- if (lg != "" && "x" %in% strsplit(lg, NULL)[[1]]) { if (any(c(from, to) <= 0)) stop("`from' & `to' must be > 0 with log=\"x\"") exp(seq(log(from), log(to), length = n)) } else seq(from, to, length = n) y <- eval(expr, envir = list(x = x), enclos = parent.frame()) if (add) lines(x, y, type = type, ...) else plot(x, y, type = type, ylab = ylab, xlim = xlim, log = lg, ...) } Kjetil Halvorsen -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- 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 _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._