[R] tapply() and barplot() help files for 1.8.1

Duncan Murdoch dmurdoch at pair.com
Thu Apr 15 18:45:24 CEST 2004

On Thu, 15 Apr 2004 18:10:27 +0200, Martin Maechler
<maechler at stat.math.ethz.ch> wrote :

>>>>>> "David" == David Whiting <david.whiting at ncl.ac.uk>
>>>>>>     on 15 Apr 2004 11:42:18 +0000 writes:
>    David> Hi,
>    David> I've just upgraded to 1.9.0 and one of my Sweave
>    David> files that produces a number of barplots in a
>    David> standard manner now produces them in a different way.
>    David> I have made a couple of small changes to my code to
>    David> get the back the output I was getting before
>    David> upgrading and now (mostly out of curiosity) would
>    David> like to understand what has changed.
>and I like to help you.
>As I keep installed `(almost) all released versions of R ever
>installed on our machines'
>I can easily run 1.8.1 (or 1.4.x or 1.0.x ...) for you.
>The only difference
> between the help page help(tapply)
>is an extra   "require(stats)" statement at the beginning of the
>`Examples' section in 1.9.0.
>and the only change to  tapply() is 
>    group <- rep.int(one, nx)#- to contain the splitting vector
>instead of
>    group <- rep    (one, nx)#- to contain the splitting vector
>which hardly should have adverse results.
>In barplot, there's the new 'offset' option  --- not in NEWS (!!!!)
>and another change that may be a problem.

Here's a reproducible bug in barplot in 1.9.0 (based on an email I got
this morning from Richard Rowe):

x <- table(rep(1:5,1:5))

The problem is that table() produces a one dimensional array, and
barplot() doesn't handle those properly now.  The offending line is
this one:

$ cvs diff -r 1.3 barplot.R
[junk deleted] 
<       width <- rep(width, length.out = NR * NC)
>       width <- rep(width, length.out = NR)

In the example above, x gets turned into a matrix with NR=1 row and
NC=5 columns so only one bar width gets set.

Duncan Murdoch

More information about the R-help mailing list