From johnc.deva at yahoo.com  Thu Feb  5 14:10:04 2009
From: johnc.deva at yahoo.com (johnc.deva at yahoo.com)
Date: Thu,  5 Feb 2009 14:10:04 +0100 (CET)
Subject: [Rd] Bug in the parser (?) (PR#13504)
Message-ID: <20090205131004.AE42C283415C@mail.pubhealth.ku.dk>

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


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.

Sincerely,
John C.



[Rd] Bug in the parser (?) (PR#13504)
johnc.deva at yahoo.com