Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency
On 11.03.2024 19:34, CRAN.r wrote: No, your assumption is backwards. The methods do need to include all arguments of the generic. As Writing R Extensions says near the start of section 7, "A method must have all the arguments of the generic, including … if the generic does." That's embarrassing. I was worried it was something simple I missed. Thanks for pointing that out! __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel Even more embarassing given you seem to be Mr CRAN given your mail message's "From" field ... Uwe Ligges __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency
> No, your assumption is backwards. The methods do need to include all > arguments of the generic. As Writing R Extensions says near the start > of section 7, "A method must have all the arguments of the generic, > including … if the generic does." That's embarrassing. I was worried it was something simple I missed. Thanks for pointing that out! __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency
On 11/03/2024 2:13 p.m., CRAN.r wrote: On Monday, March 11th, 2024 at 12:43 PM, Diego Hernangómez Herrero wrote: Shouldn’t you include the y argument also inmyscale.default ? Your generic is defining that argument as well. I assume (hopefully correctly) that methods don't need to include all the arguments of the generic. I get the same warning if I use "..." instead of y, too. No, your assumption is backwards. The methods do need to include all arguments of the generic. As Writing R Extensions says near the start of section 7, "A method must have all the arguments of the generic, including … if the generic does." Think about your user. They'll ask about help for `inmyscale`, and see that it has two arguments, x and y. If x is a type that goes to `inmyscale.default`, the user would receive an error when they followed the docs and included the y value. The usual way to handle this is to include both x and y in all methods, but document some of them to say that y is ignored. Duncan Murdoch __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency
Usually when I write a generic I use … in the definition to allow using additional arguments in specific methods, see as_bibentry <- function(x, ...) { UseMethod("as_bibentry") } as_bibentry.cff <- function(x, ..., what = c("preferred", "references", "all")) { } but in any case the method must include at least the arguments defined in the same order. Using … in the generic allows me to include `what` arg with no WARNINGs. Have a nice day! El El lun, 11 mar 2024 a las 19:13, CRAN.r escribió: > On Monday, March 11th, 2024 at 12:43 PM, Diego Hernangómez Herrero < > diego.hernangomezherr...@gmail.com> wrote: > > > Shouldn’t you include the y argument also inmyscale.default ? Your > generic is defining that argument as well. > > I assume (hopefully correctly) that methods don't need to include all the > arguments of the generic. I get the same warning if I use "..." instead of > y, too. > [[alternative HTML version deleted]] __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency
On Monday, March 11th, 2024 at 12:43 PM, Diego Hernangómez Herrero wrote: > Shouldn’t you include the y argument also inmyscale.default ? Your generic is > defining that argument as well. I assume (hopefully correctly) that methods don't need to include all the arguments of the generic. I get the same warning if I use "..." instead of y, too. __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
Re: [R-pkg-devel] R CHECK warning about new S3 generic/method consistency
Shouldn’t you include the y argument also in myscale.default ? Your generic is defining that argument as well. Have a nice day! El El lun, 11 mar 2024 a las 18:25, CRAN.r escribió: > I'm trying to define a new generic, and keep getting an S3 generic/method > consistency when running R CHECK. All of the code seems to be working, and > I'm not getting any note, errors, or other warnings. > > This minimal example shows the warning I'm getting. The functions are > > myscale <- function(x, y) UseMethod("myscale") > myscale.default <- function(x) x > > The usage section of the man file is > > \usage{ > myscale(x, y) > \method{myscale}{default}(x) > } > > and the NAMESPACE file is > > export("myscale", "myscale.default") > S3method(myscale, default) > > When I build the package and run CHECK, I get > > * checking S3 generic/method consistency ... WARNING > myscale: > function(x, y) > myscale.default: > function(x) > See section 'Generic functions and methods' in the 'Writing R > Extensions' manual. > > As I understand it, there shouldn't be a problem as long as the generic > function contains all possible arguments of any method, and the methods > have their arguments in the same order as the generic. It seems that having > one method with only "x" shouldn't be a problem. I've read the section > mentioned in the warning, but I can't figure out what's going on. Is any of > this wrong? > > Jay > > __ > R-package-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-package-devel > [[alternative HTML version deleted]] __ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel