[R] Sloppy argument checking for named arguments

Gabor Grothendieck ggrothendieck at myway.com
Thu Jun 3 06:15:41 CEST 2004


It has already been pointed out that partial matching is a feature.

However, if the function uses ... then it will only match arguments 
exactly so if you want to write a function in which full matching only 
is accepted you can do it by putting in a dummy first argument of 
... and then issuing an error messaage if ... matches anything:

f <- function( ..., foo.bar = 0 )  { 
          stopifnot( length(list(...)) == 0 )
          print( foo.bar )
}

 
R> f( foo.bar = 1 )
[1] 1
R> f( foo = 1 )
Error: length(list(...)) == 0 is not TRUE


Christian Lederer <christianlederer <at> t-online.de> writes:

: 
: Dear R Gurus,
: 
: i recently noticed that R does sloppy argument checking for named
: arguments, if the argument contains a dot.
: Example:
: 
:  > f <- function(foo.bar=0) { print(foo.bar) }
:  > f(foo=1)
: [1] 1
: 
: I guess, this should be considered as a bug.
: Anyway, the consequence is that bugs caused by typing errors
: of this kind may are *very* hard to discover in complex progams.
: 
: Christian
: 
: ______________________________________________
: R-help <at> stat.math.ethz.ch mailing list
: https://www.stat.math.ethz.ch/mailman/listinfo/r-help
: PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
: 
:




More information about the R-help mailing list