[R-pkg-devel] slightly polemic question re R CMD check

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Sun Mar 8 17:24:09 CET 2020


You seem to think this is a bad thing. R does encourage lenient argument checking... what rock have you been under for the last 20 years?

On March 8, 2020 5:41:51 AM PDT, David Hugh-Jones <davidhughjones using gmail.com> wrote:
>You're quite right :-) But I think the polemic still holds, because I
>have
>to add manual argument checking to all my methods, which has a cost in
>lines of code. Indeed, few base R methods have chosen to do this. In
>effect, the current setup encourages writing methods with "lenient"
>argument specifications.
>
>Thank you for the suggestion about ellipsis.
>
>On Sun, 8 Mar 2020, 11:04 Gábor Csárdi, <csardi.gabor using gmail.com> wrote:
>
>> You can add the ... argument to chop.default(), and then check that
>> length(list(...)) is zero.
>>
>> Also, you might be interested in the ellipsis package.
>>
>> Gabor
>>
>> On Sun, Mar 8, 2020 at 10:56 AM David Hugh-Jones
>> <davidhughjones using gmail.com> wrote:
>> >
>> > Hi all,
>> >
>> > My package defines the following method and generic:
>> >
>> > chop <- function (x, ...) UseMethod("chop")
>> >
>> > chop.default <- function (x, breaks, labels, extend = NULL, drop =
>TRUE)
>> {
>> > ... }
>> >
>> > R CMD check then gives a warning:
>> >
>> > W  checking S3 generic/method consistency (695ms)
>> >    chop:
>> >      function(x, ...)
>> >    chop.default:
>> >      function(x, breaks, labels, extend, drop)
>> >
>> >    See section ‘Generic functions and methods’ in the ‘Writing R
>> >    Extensions’ manual.
>> >
>> > I can fix this by adding a ... argument to chop.default:
>> >
>> > chop.default <- function (x, breaks, labels, extend = NULL, drop =
>> > TRUE, ...)
>> >
>> > But that makes the code less robust because e.g.
>> >
>> > chop(x, Breaks = 1:3)
>> >
>> > will no longer throw an error from the misspelled argument.
>> >
>> > Or I can write:
>> >
>> > chop(x, breaks, labels, extend, drop) UseMethod("chop")
>> >
>> > but this means I cannot use a different interface for a different
>method.
>> >
>> > This seems like a mistake. (That's the polemic.) Or am I missing a
>better
>> > way? (That's the question.)
>> >
>> > David
>> >
>> >         [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > R-package-devel using r-project.org mailing list
>> > https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-package-devel using r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-package-devel

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-package-devel mailing list