[Rd] Revised scatter.smooth using xy.coords
Paul Murrell
p.murrell at auckland.ac.nz
Tue Jun 21 05:18:34 CEST 2005
Hi
Thanks for these suggestions Kevin.
These are now in the development version of R.
Paul
kwright at eskimo.com wrote:
> This started when I discovered that scatter.smooth (R 2.1.0) has an
> undocumented ability to use a formula as the first argument. Then I
> discovered the xy.coords function, which seems like a natural fit and a
> way to unify scatter.smooth with other plotting functions, so I offer here
> a revised version of scatter.smooth that uses the xy.coords function.
>
>
> scatter.smooth <- function (x, y=NULL, span = 2/3, degree = 1,
> family = c("symmetric", "gaussian"),
> xlab = NULL,
> ylab = NULL,
> ylim = range(y, prediction$y, na.rm = TRUE),
> evaluation = 50, ...) {
> xlabel <- if (!missing(x))
> deparse(substitute(x))
> ylabel <- if (!missing(y))
> deparse(substitute(y))
> xy <- xy.coords(x, y, xlabel, ylabel)
>
> x <- xy$x
> y <- xy$y
> xlab <- if(is.null(xlab)) xy$xlab
> else xlab
> ylab <- if(is.null(ylab)) xy$ylab
> else ylab
>
> # if (inherits(x, "formula")) {
> # if (length(x) < 3)
> # stop("need response in formula")
> # thiscall <- match.call()
> # thiscall$x <- x[[3]]
> # thiscall$y <- x[[2]]
> # return(invisible(eval(thiscall, sys.parent())))
> # }
> prediction <- loess.smooth(x, y, span, degree, family, evaluation)
> plot(x, y, ylim = ylim, xlab = xlab, ylab = ylab, ...)
> lines(prediction)
> invisible()
> }
>
> 1. I commented out some existing code and my revisions appear before the
> commented block.
>
> 2. The argument list has changed slightly. The original arguments were:
> y
> xlab=deparse(substitute(x))
> ylab=deparse(substitute(y))
>
> 3. With the suggested change, the following examples now work as one
> would expect
>
> attach(cars)
> scatter.smooth(speed,dist,main="dist,speed")
> scatter.smooth(speed,dist,main="dist,speed",xlab="",ylab="")
> scatter.smooth(cars,main="cars")
> scatter.smooth(cars,main="cars",xlab="Speed",ylab="Distance")
> scatter.smooth(dist~speed,main="dist~speed")
> scatter.smooth(dist~speed,main="dist~speed",xlab="")
> scatter.smooth(dist~speed,main="dist~speed",ylab="")
>
> 4. If this revision is accepted, the help page for scatter.smooth should
> probably be updated, perhaps using the same definition of the x,y
> arguments in the plot.default help page.
>
> Best,
>
> Kevin Wright
>
> ______________________________________________
> R-devel at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
--
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/
More information about the R-devel
mailing list