Why is R inconsistent with the add parameter in the plot() function?
It sometimes works and sometimes doesn’t!
In this example, it takes the parameter add=TRUE with no problem:
plot(0:10, 0:10*3)
plot(identity, add=TRUE, xlim=c(0,10))
plot(function (x) { sin(x)*10 }, add=TRUE, xlim=c(0,10))
But when I issue
plot(c(2, 3, 4), c(20,10,15), add=TRUE, pch="A")
It doesn’t work!! It says that “add” is not a graphical parameter.
Please do not write that I should use points() instead. I know I can use it.
I want to understand the strange behaviour of R – why does it sometimes work and sometimes not?
This is admittedly annoying and inconsistent, but it’s explicable.
identityis an object of a class —function— that has aplotmethod (plot.function) with anaddargument, while the defaultplotmethod does not have anaddargument.In general, when trying to plot object
bar, you should tryclass(bar); if it is of classfoothen trymethods(class="foo")to see that it has a plot method, ormethods("plot")to see thatplot.fooexists. Try?plot.foo(orhelp("plot.foo")to see help, orplot.footo see the function itself. (If the method is a private function in the packagemypkgyou may needmypkg:::plot_fooor orgetAnywhere(plot.foo)to find it.)