On Thu, 2007-11-29 at 17:34 +0100, Peter Dalgaard wrote: > Gavin Simpson wrote: > > On Thu, 2007-11-29 at 16:36 +0100, Peter Dalgaard wrote: > > > >> [EMAIL PROTECTED] wrote: > >> > >>> Full_Name: Carlos Gershenson > >>> Version: 2.6.1 > >>> OS: MacOSX > >>> Submission from: (NULL) (24.128.48.138) > >>> > >>> > >>> Hi, > >>> > >>> Try this out: > >>> > >>> x<-1:10 > >>> y<-x/2 > >>> plot(table(x)) > >>> points(table(y)) > >>> #or lines(table(y)) > >>> > >>> No matter what's the value of y, it prints out in the coordinates of x... > >>> this > >>> happens only with tables, not with simple plot(x), points(y), and > >>> table(y) works > >>> fine > >>> > >>> > >>> > >> The real issue is that we have a plot method for tables, which tries to > >> be smart about using numerical entry names. There's no similar points > >> method, nor a lines method, so in those cases you get the default > >> method, namely to plot the table values (all ones) against the *index*, > >> i.e.,1:n. This shows the effect quite clearly: > >> > >> plot(table(x^2) > >> lines(table(x)) > >> > >> (This is not a bug, since noone has promised you that lines and point > >> methods should exist. It could be taken as an enhancement request.) > >> > > > > Peter, > > > > Re: your final statement above, would an enhancement request be looked > > upon favourably by R Core for inclusion in R if some code and > > documentation were supplied? > > > As always, there is a risk that it falls through the cracks before > someone gets around to looking at it. > > Your code look sane though, and as far as I can see, you do not even > have to do much in terms of documentation since it could be wedged into > the existing plot.table() help page. > > For now, we could file under "wishlist". As you know, items on the > wishlist do in fact get fulfilled sometimes. > > -p
OK. I'll prepare a patch against the R development SVN for the Rd file and take another look at the code I wrote. Can you refile this bug under "wishlist" or do I need to submit another bug report to achieve this? All the best, G > > I replied earlier in the week to Carlos' query on R-Help (seems this has > > taken 2 days to get the R-Devel?) with some quickly knocked together > > code for points.table and Axis.table methods that were based in large > > part on the code in plot.table. I reproduce these below. They were based > > on printing the source plot.table at the prompt, not from interrogation > > of the SVN version. > > > > If considered for inclusion, I'd be happy to get these in better shape > > and write appropriate Rd files as required? > > > > All the best, > > > > G > > > > ## points and Axis methods for objects of class "table" > > ## Gavin Simpson 2007 based in large part on plot.table > > `points.table` <- function (x, type = "h", ...) > > { > > rnk <- length(dim(x)) > > if (rnk == 0) > > stop("invalid table 'x'") > > if (rnk == 1) { > > nx <- dimnames(x)[[1]] > > ow <- options(warn = -1) > > is.num <- !any(is.na(xx <- as.numeric(nx))) > > options(ow) > > x0 <- if (is.num) > > xx > > else seq.int(x) > > points(x0, unclass(x), type = type, ...) > > } > > else stop("only for 1-D table") > > } > > > > `Axis.table` <- function(x, at, ..., labels) > > { > > rnk <- length(dim(x)) > > if (rnk == 0) > > stop("invalid table 'x'") > > if (rnk == 1) { > > nx <- dimnames(x)[[1]] > > ow <- options(warn = -1) > > is.num <- !any(is.na(xx <- as.numeric(nx))) > > options(ow) > > x0 <- if (is.num) > > xx > > else seq.int(x) > > if(missing(at)) > > at <- x0 > > if(missing(labels)) > > labels <- nx > > xaxt <- if (length(as <- list(...))) { > > if (!is.null(as$axes) && !as$axes) > > "n" > > else as$xaxt > > } > > axis(1, at = at, labels = labels, xaxt = xaxt) > > } > > else stop("only for 1-D table") > > } > > > > ## example to run with: > > set.seed(1234) > > x <- sample(1:10, 30, replace = TRUE) > > y <- x / 2 > > plot(table(x), type = "p") > > points(table(y), col = "red", type = "p", pch = 2) > > > > ## And if you need to redraw axes > > ## need to use Axis() as it is a generic version of axis() > > plot(table(x), type = "p", axes = FALSE) > > points(table(y), col = "red", type = "p", pch = 2) > > Axis(table(y)) > > > > > > > -- > O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B > c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K > (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 > ~~~~~~~~~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 > > -- %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% Dr. Gavin Simpson [t] +44 (0)20 7679 0522 ECRC, UCL Geography, [f] +44 (0)20 7679 0565 Pearson Building, [e] gavin.simpsonATNOSPAMucl.ac.uk Gower Street, London [w] http://www.ucl.ac.uk/~ucfagls/ UK. WC1E 6BT. [w] http://www.freshwaters.org.uk %~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~% ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel