[R-pkg-devel] Redefinition of generic for plot function breaks plot.formula

Benjamin Hofner benjamin.hofner at fau.de
Tue Sep 1 15:08:34 CEST 2015


Dear Gavin,

unfortunately, I cannot overwrite plot.data.frame only. If I do this I
get the following warning from R CMD check:

* checking use of S3 registration ... WARNING
Registered S3 method from a standard package overwritten by 'papeR':
method from
plot.data.frame graphics

The reason for this is given in the following statement by Prof. Ripley:

 > Do not replace registered S3 methods from base/recommended packages,
 > something which is not allowed by the CRAN policies and will mean
 > that everyone gets your method even if your namespace is unloaded.

The route I am taking is one of the advised routes to go (see 
https://github.com/hofnerb/papeR/issues/5). So I am still looking for a 
fix of this issue.

Your warning regarding the changed user experience is well noted. 
However, I think (and am aware that this is my personal opinion) that a 
lot of users will not miss the standard plot.data.frame method which is 
only well defined for numerics anyway and not very informative in many 
situations. After your comment I am thinking of adding an option to my 
plot.data.frame function which allows to fall back to the original user 
experience.

Thanks,
Benjamin

Am 01.09.2015 um 04:37 schrieb Gavin Simpson:
> Why do you even need to take over `plot`, `plot.default`? You can just
> register/export the plot.data.frame method from our package without
> touching the generic or default method. The part of WRE that you refer
> to is about making functions that are *not* S3 methods in one of base R
> or it's packages into S3 generics. You are just providing a method for
> an existing generic so you don't need to follow that code.
>
> That said, it wouldn't be good form to fundamentally alter the way
> plot.data.frame worked as users might expect certain functionality.
>
> HTH
>
> G
>
> On 31 August 2015 at 04:03, Benjamin Hofner <benjamin.hofner at fau.de
> <mailto:benjamin.hofner at fau.de>> wrote:
>
>     Dear all,
>
>     CRAN policies do not allow that single methods (for generic
>     functions) which are defined in base or recommended packages are
>     replaced. They advice package authors to replace the standard
>     generic and use a xxx.default method which then calls the original
>     standard generic.
>
>     Using the following code
>
>
>     ## overwrite standard generic
>     plot <- function(x, y, ...)
>          UseMethod("plot")
>
>     ## per default fall back to standard generic
>     plot.default <- function(x, y, ...)
>          graphics::plot(x, y, ...)
>
>     ## now specify modified plot function for data frames
>     plot.data.frame <- function(x, variables = names(x), ...)
>
>
>     essentially works for all tested plot.xxx functions. Yet, it breaks
>     plot.formula. How can I proceed to overwrite plot.data.frame without
>     breaking plot.formula. Any help is greatly appreciated.
>
>     For a detailed description of the problem with syntax highlighting
>     and code to reproduce the problem please see:
>
>     http://stackoverflow.com/questions/32246361/redefinition-of-generic-for-plot-function-breaks-plot-formula
>
>     Best,
>     Benjamin
>     --
>     ******************************************************************************
>     Dr. rer. nat. Benjamin Hofner
>
>     Institut für Medizininformatik, Biometrie und Epidemiologie
>     Friedrich-Alexander-Universität Erlangen-Nürnberg
>     Waldstr. 6 - 91054 Erlangen - Germany
>
>     Tel: +49-9131-85-22707 <tel:%2B49-9131-85-22707>
>     Fax: +49-9131-85-25740 <tel:%2B49-9131-85-25740>
>
>     Büro:
>        Raum 3.036
>        Universitätsstraße 22
>        (Eingang linke Seite des Gebäudes; Wegweiser IMBE)
>
>     benjamin.hofner at fau.de <mailto:benjamin.hofner at fau.de>
>
>     http://www.imbe.med.uni-erlangen.de/cms/benjamin_hofner.html
>     http://www.benjaminhofner.de
>
>     ______________________________________________
>     R-package-devel at r-project.org <mailto:R-package-devel at r-project.org>
>     mailing list
>     https://stat.ethz.ch/mailman/listinfo/r-package-devel
>
>
>
>
> --
> Gavin Simpson, PhD



More information about the R-package-devel mailing list