[R-pkg-devel] Generic method redefinition and dispatch

Pedro J. Aphalo pedro.aphalo at helsinki.fi
Thu Aug 10 13:41:08 CEST 2017


Package 'ggplot2' defines `ggplot()` as an S3 generic.

My package 'ggspectra' defines some specializations of ggplot() for 
additional classes, which work as expected together with all packages 
extending 'ggplot2' that I have tested, except for 'ggtern'.

Package 'ggtern' imports 'ggplot2' and then redefines the ggplot() 
generic with exactly the same code as in 'ggplot2' itself.

If one attempts to use my package and 'ggtern' in the same session, 
dispatch fails for the ggplot() specializations defined in my package, 
unless an explicit call to ggplot2::ggpplot() is used.

I do not understand why the generic needs to be redefined in 'ggtern', 
and although I have raised an issue for 'ggtern' last November, the just 
released version of 'ggtern' retains the redefinition of the generic.

So, I have some questions:

1) Can I do anything in my own package to ensure that method dispatch 
works correctly even after 'ggtern' is attached?

2) Is it good practice for a package to redefine a generic from an 
imported package?

3) Is it possible to redefine a generic, without disturbing the dispatch 
of specializations already known to R?

Thanks in advance for any insights,


Pedro J. Aphalo
University Lecturer, Principal Investigator
(Office 4417, Biocenter 3, Viikinkaari 1)

Department of Biosciences
Plant Biology
P.O. Box 65
00014 University of Helsinki

e-mail: pedro.aphalo at helsinki.fi <mailto:pedro.aphalo at helsinki.fi>
Tel. (mobile) +358 50 4150623
Tel. (office) +358 2941 57897

*Web sites and blogs*
Web site (research group): http://blogs.helsinki.fi/senpep-blog/
Web site (own teaching): http://www.helsinki.fi/people/pedro.aphalo/
Web site (using R in photobiology): http://www.r4photobiology.info/
UV4Plants <http://www.uv4plants.org/> (communications officer), ESP 
<http://www.photobiology.eu/> (member) SEB <http://www.sebiology.org/> 
(member), BES <http://www.britishecologicalsociety.org/> (member), SPPS 
<http://www.spps.fi/> (member), SMS 
<http://www.metsatieteellinenseura.fi/english> (member), TUG 
<http://tug.org/> (member), FOAS <http://www.foastat.org/> (member).

	[[alternative HTML version deleted]]

More information about the R-package-devel mailing list