[Rd] Bug in the parser (?) (PR#13504)

johnc.deva at yahoo.com johnc.deva at yahoo.com
Thu Feb 5 14:10:04 CET 2009

Full_Name: John C. Deva
Version: 2.8.1
OS: Fedora Linux 8, 64 bit
Submission from: (NULL) (

I notice that it is possible to redefine 'if' as a function of an arbitrary
number of arguments.  Such redefined 'if' can then be used as any other user
function, except for that the parser still demands exactly three arguments to be
given to if.  Furthermore, even if 'if' is defined with three arguments, its
application must still be made with the original syntax, and not the usual
syntax of function application:

> `if` <- function(a,b,c) 
+ {
+ assign(deparse(substitute(a)), b+c, envir=parent.frame()
+ }

> if (x) 1 else 2
> x
[1] 3

> if(x, 1, 2)
Error: unexpected ',' in "if(x,"

The later expression above should be the only valid when 'if' is redefined as
above, but it is not the case.

John C.

More information about the R-devel mailing list