[Rd] does subset.data.frame need to accept extra arguments?

Duncan Murdoch murdoch.duncan at gmail.com
Mon Jul 8 10:40:41 CEST 2013


On 13-07-07 11:09 PM, Peter Meilstrup wrote:
> The formal list for subset.data.frame accepts a "..."
>
>> args(subset.data.frame)
> function (x, subset, select, drop = FALSE, ...)
> NULL
>
> But it appears that subset.data.frame does not actually use the "..." or
> pass it along:
>
>> "..." %in% all.names(body(subset.data.frame))
> [1] FALSE
>
> Is there any reason why subset.data.frame needs to accept extra, unused
> arguments? One recurring error I see myself and other people making in
> interactive use is to type an = instead of an == in a subset call, e.g.
>
> subset(df, column=value)
>
> which I think ought to be an error, but it silently returns df instead.
>
> If "..." were eliminated from the formals of subset.data.frame, it would
> eliminate a frequent user error.

It needs to have ... in the formal argument list because the generic 
subset() does.

It could enforce a run-time warning that some arguments were being 
skipped (by testing length(list(...)) for example), but then NextMethod 
might fail, in a case where an object has a complicated class vector.

This is basically a limitation of the S3 class system.  The S4 system 
can do much more careful checking.

Duncan Murdoch



More information about the R-devel mailing list