Actually this works beautifully as it stands: breaks <- c(-Inf, -1, 1, Inf)
zz <- lapply(breaks, function(x) if(x==-Inf) quote(-infinity) else if (x==Inf) quote(infinity) else format(x)) lbl <- mapply(function(x,y) bquote("(" * .(x) * "," * .(y) * "]"), zz[-length(zz)], zz[-1], SIMPLIFY=FALSE) y <- rnorm(40) x0 <- cut(y, breaks=breaks) plot(x0, y, xaxt="n") axis(1, at=1:3, labels=as.expression(lbl)) Thanks, Peter. John Maindonald email: [EMAIL PROTECTED] phone : +61 2 (6125)3473 fax : +61 2(6125)5549 Centre for Mathematics & Its Applications, Room 1194, John Dedman Mathematical Sciences Building (Building 27) Australian National University, Canberra ACT 0200. On 31 Dec 2007, at 12:35 PM, Peter Dalgaard wrote: > John Maindonald wrote: >> I'd like to be able to modify axlab in (C) below so that 'Inf' >> is replaced by the infinity symbol. >> >> y <- rnorm(40) >> breaks <- c(-Inf, -1, 1, Inf) >> x <- cut(y, breaks=breaks) >> plot(unclass(x), y, xaxt="n", xlab="") >> >> ## A: The following gives the axis labels "(-Inf, 1]", etc. >> axis(1, at=1:3, labels=expression("(-Inf,-1]", "(-1,1]", "(1, Inf]")) >> >> ## B: The following replaces Inf by the infinity symbol >> axis(1, at=1:3, labels=expression("(" * -infinity * ", " * -1 * "]", >> "(" * -1 * ", 1]", "(1, " * >> infinity * "]"), >> line=1.25, lty=0) >> >> ## C: The following gives the axis labels "(-Inf, 1]", etc., >> ## in a more automated manner. >> axlab <- lapply(levels(x), function(x)substitute(a, list(a=x))) >> # Can alternatively use bquote() >> axis(1, at=1:3, labels=as.expression(axlab), line=2.25, lty=0) >> >> However I have been unable to modify axlab so that the infinity >> symbol appears in place of 'Inf'. Is there is some relatively >> straightforward way to do this? The issue is of course more >> general than this specific example. >> > Here's an idea, leaving some tinkering for you: > > breaks <- c(-Inf, -1, 1, Inf) > > zz <- lapply(breaks, function(x) if(x==-Inf) quote(-infinity) > else > if (x==Inf) quote(infinity) else format(x)) > > lbl <- mapply(function(x,y) > bquote("(" * .(x) * "," * .(y) * "]"), > zz[-4], zz[-1], SIMPLIFY=FALSE) > > > -- > 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 > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.