Dear All, I've run into this while updating a package with unfortunately named legacy functions. It seems like something that might be worth changing in R, and I want to get a sense of whether this is a problem before submitting a report to the Bugzilla.
It appears that the 3-argument form of S3method() in NAMESPACE controls dispatching when the generic is called from outside the package that defines it but not when it's called from inside the package that defines it. For example the attached minimal package has four R functions: gen <- function(object, ...) UseMethod("gen") .gen.formula <- function(object, ...){ message("I am the S3method-declared method.") } gen.formula <- function(object, ...){ message("I am the function with an unfortunate name.") } test_me <- function(){ message("I am the tester. Which one will I call?") gen(a~b) } and the following NAMESPACE: export(gen) S3method(gen, formula, .gen.formula) export(gen.formula) export(test_me) Now, library(anRpackage) example(test_me) results in the following: test_m> test_me function(){ message("I am the tester. Which one will I call?") gen(a~b) } <bytecode: 0x562fb9d32d68> <environment: namespace:anRpackage> test_m> test_me() # Calls gen.formula() I am the tester. Which one will I call? I am the function with an unfortunate name. test_m> gen(a~b) # Calls .gen.formula() I am the S3method-declared method. So, calling the same generic function with the same class results in different dispatching behaviour depending on whether the call is from within the package doing the export or from the outside. This behaviour appears to be as documented ( https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Method-dispatching ), but it seems to me that if S3method() is allowed to give the name of the method to be used, then it should should override the name-based dispatching both inside and outside the package. Any thoughts? Pavel Krivitsky -- Pavel Krivitsky Lecturer in Statistics National Institute of Applied Statistics Research Australia (NIASRA) School of Mathematics and Applied Statistics | Building 39C Room 154 University of Wollongong NSW 2522 Australia T +61 2 4221 3713 Web (NIASRA): http://niasra.uow.edu.au/index.html Web (Personal): http://www.krivitsky.net/research ORCID: 0000-0002-9101-3362 NOTICE: This email is intended for the addressee named and may contain confidential information. If you are not the intended recipient, please delete it and notify the sender. Please consider the environment before printing this email.
anRpackage_1.0.tar.gz
Description: anRpackage_1.0.tar.gz
______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel