[R] Debugging R's code: boxplot.stats

Matthew Walker m.g.walker at massey.ac.nz
Mon Oct 30 00:08:52 CET 2006


On Sat, 2006-10-28 at 08:03 -0400, Duncan Murdoch wrote:
> On 10/27/2006 11:06 PM, Matthew Walker wrote:
> > Hi everyone,
> > 
> > I think I have found a minor issue with the R function "boxplot.stats".
> > But before I make such a rash comment, I'd like to check my facts by
> > fixing what I think is the problem.  However, why I try to do this, R
> > does not behave as I expect.  Can you tell me what I'm doing wrong?
> > 
> > If I use the command:
> > debug(boxplot.stats)
> > I am allowed to step through the code as normal.
> > 
> > I then want to edit the function, so I type:
> > boxplot.stats <- edit(boxplot.stats)
> > and I make my changes.
> > 
> > I can check my changes have been made by typing:
> > boxplot.stats
> > and the updated version appears on screen.
> > 
> > But now when I come to test my changes, the "debug" functionality has
> > just up and disappeared; I can no longer step though the function as
> > normal.  Further to that, it appears that the change has somehow not
> > been registered, as exactly the same error occurs---although I cannot be
> > sure that it is occurring inside boxplot.stats.
> > 
> > Does anyone have any tips, suggestions or comments?  I'd love to be able
> > to fix this.
> > 
> > (For what it's worth I wish to change line 14 of boxplot.stats so that
> > it reads "if (any(out[nna],na.rm=TRUE))".)
> 
> Besides what Gabor said, an issue here is that boxplot.stats lives in 
> the grDevices namespace.  If you call boxplot(), it will look there 
> before it sees your locally modified copy.
> 
> For testing, you can call boxplot.stats directly from the console, or 
> also make a local copy of boxplot.
> 
> Not sure why boxplot.stats is in grDevices rather than graphics, but 
> that's not really relevant to your problems.
> 
> Duncan Murdoch
> 

Hi Duncan,

Thanks for your reply.

How do you know that (i) boxplot.stats lives in the grDevices namespace?
and (ii) how do you know/change that boxplot will look in grDevices
before it uses the local copy?

I tried to do as you suggested and create a local copy of boxplot.  I
used the following commands:
boxplot.stats <- edit(boxplot.stats)  # Made changes to line 14
boxplot <- edit(boxplot)              
boxplot.default <- edit(boxplot.default)  # Added a call to "cat()"

When I called boxplot() the local copy was executed (as I could see the
output of my "cat" commands), however it appears that the local copy of
boxplot.stats isn't the one being called from my version of "boxplot".
How do I fix this?

Thanks again,

Matthew



More information about the R-help mailing list