[R] Bug? plot.formula does need support plot.first / plot.last param in plot.default

Duncan Murdoch murdoch@dunc@n @end|ng |rom gm@||@com
Sat Jul 6 00:05:50 CEST 2024


That definitely looks like a bug, but not one that anyone will be eager 
to fix.  It's very old code that tried to be clever, and that's the 
hardest kind of code to fix.

Remember Kernighan's Law:  "Everyone knows that debugging is twice as 
hard as writing a program in the first place. So if you’re as clever as 
you can be when you write it, how will you ever debug it?"

Duncan Murdoch

On 2024-07-05 7:35 a.m., Erez Shomron wrote:
> Is the following a bug in your opinion? I think so.
> 
> This works as expected:
> 
> ```
> with(mtcars, plot(wt, mpg, plot.first = {
>      plot.window(range(wt), range(mpg))
>      arrows(3, 15, 4, 30)
> }))
> ```
> 
> This does not.
> 
> ```
> plot(mpg ~ wt, data = mtcars, plot.first = {
>      plot.window(range(wt), range(mpg))
>      arrows(3, 15, 4, 30)
> })
> ```
> 
> With error:
> ```
> Error in arrows(3, 15, 4, 30) : plot.new has not been called yet
> ```
> 
> The second example should work.
> 
>  From the docs:
> 
> ?plot.formula
> "     For the ‘plot’ method the formula can be of the form ‘~ z + y +
>       z’: the variables specified on the right-hand side are collected
>       into a data frame, subsetted if specified, and displayed by
>       ‘plot.data.frame’.
> "
> 
> ?plot.data.frame
> "     ...: further arguments to ‘stripchart’, ‘plot.default’ or ‘pairs’.
> "
> 
> And plot.default has both plot.first and plot.last
> 
> It seems very arbitrary you can't use these parameters with the plot.formula method specifically.
> 
>> sessionInfo()
> R version 4.4.1 (2024-06-14)
> Platform: x86_64-suse-linux-gnu
> Running under: openSUSE Tumbleweed
> [...]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.



More information about the R-help mailing list