Thank you Duncan, Brian, Hadley, and Lin. In Lin's suggestion, I believe the latter two statements should be reversed, so that the environment is added before the function is placed into the graphics namespace.
source('plot.histogram.R') environment(plot.histogram) <- asNamespace('graphics') assignInNamespace('plot.histogram', plot.histogram, ns='graphics') The middle statement could also be environment(plot.histogram) <- environment(graphics:::plot.histogram) The point is to ensure that the replacement version has the same environment as the original. Having tested this, I will now submit a bug report :-) On Thu, Oct 9, 2014 at 9:11 AM, C Lin <bac...@hotmail.com> wrote: > I posted similar question a while ago. Search for "modify function in a > package". > In your case, the following should work. > > source('plot.histogram.R') > assignInNamespace('plot.histogram',plot.histogram,ns='graphics') > environment(plot.histogram) <- asNamespace('graphics'); > > Assuming you have your own plot.histogram function inside > "plot.histogram.R" and the plot.histogram function you are trying to > overwrite is in graphics package. > > Lin > > ---------------------------------------- > > From: h.wick...@gmail.com > > Date: Thu, 9 Oct 2014 07:00:31 -0500 > > To: timhesterb...@gmail.com > > CC: r-h...@stat.math.ethz.ch > > Subject: Re: [R] How can I overwrite a method in R? > > > > This is usually ill-advised, but I think it's the right solution for > > your problem: > > > > assignInNamespace("plot.histogram", function(...) plot(1:10), "graphics") > > hist(1:10) > > > > Haley > > > > On Thu, Oct 9, 2014 at 1:14 AM, Tim Hesterberg <timhesterb...@gmail.com> > wrote: > >> How can I create an improved version of a method in R, and have it be > used? > >> > >> Short version: > >> I think plot.histogram has a bug, and I'd like to try a version with a > fix. > >> But when I call hist(), my fixed version doesn't get used. > >> > >> Long version: > >> hist() calls plot() which calls plot.histogram() which fails to pass ... > >> when it calls plot.window(). > >> As a result hist() ignores xaxs and yaxs arguments. > >> I'd like to make my own copy of plot.histogram that passes ... to > >> plot.window(). > >> > >> If I just make my own copy of plot.histogram, plot() ignores it, > because my > >> version is not part of the same graphics package that plot belongs to. > >> > >> If I copy hist, hist.default and plot, the copies inherit the same > >> environments as > >> the originals, and behave the same. > >> > >> If I also change the environment of each to .GlobalEnv, hist.default > fails > >> in > >> a .Call because it cannot find C_BinCount. > >> > >> [[alternative HTML version deleted]] > >> > >> ______________________________________________ > >> 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. > > > > > > > > -- > > http://had.co.nz/ > > > > ______________________________________________ > > 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. > > -- Tim Hesterberg http://www.timhesterberg.net (resampling, water bottle rockets, computers to Costa Rica, hot shower = 2650 light bulbs, ...) Help your students understand statistics: Mathematical Statistics with Resampling and R, Chihara & Hesterberg http://www.timhesterberg.net/bootstrap/ [[alternative HTML version deleted]] ______________________________________________ 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.