I am trying to get a function written in R that calls a cascade of functions 
from the graphics package, and I want to eventually call replacements to 
functions in the graphics package instead of the originals.  Specifically, I 
have a function that calls qqnorm in stats, which calls qqnorm.default in 
stats, which calls plot in graphics, which calls plot.default and plot.new, and 
I want my own functions plot.default and plot.new that I entered at the command 
line (which I guess means that it is in .GlobalEnv).  I'd like my plot.default 
and plot.new called (this afternoon, at least) in place of every invocation of 
plot.default and plot.new resp..  So far I've tried:

reassignInPackage from R.utils: 
reassignInPackage("plot.default","graphics",my.plot.default) gives "Error in 
assignInNamespaceT(name, value, ns = pkgName, envir = env) :   locked binding 
of ‘plot.default’ cannot be changed", even after
unlockBinding("plot.default",as.environment("package:graphics"))

assignInNamespace seems to almost work.  Here's what I enter:

plot.default<-function(...){cat("Entered plot.default")}
plot.new<-function(...){cat("Entered plot.new")}
assignInNamespace("plot.default",plot.default,ns="graphics")
assignInNamespace("plot.new",plot.new,ns="graphics")
qqnorm(1:10)

and here's what I get:

Entered plot.newError in plot.xy(xy, type, ...) : plot.new has not been called 
yet

It seems as though my new plot.new is being called, but the existing 
plot.default is being called, even though the new version is in 
graphics::plot.default.  I conjecture that this is because the original 
plot.default got exported when the package loaded, but is there a
 way to overwrite this?  Thanks, John

______________________________________________
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.

Reply via email to