johnc.d...@yahoo.com wrote: > 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.
A bug report with a ? in the title is in general ill-advised. If you are not sure that something is a bug, then ask a question instead. In this case, no, it is not a bug. Syntax is syntax and "if(x,1,2)" is a syntax error no matter how if() is defined. Parsing is controlled by the fact that "if" is a keyword, the function definition is not used at all at that stage. `if`(x,1,2) works perfectly well, though, at least until you try deparsing it: > quote(`if`(x,1,2)) if (x) 1 else 2 Redefining "if" is a really Bad Idea, excepting things like code analysis tools (which I believe are the main reason it is not explicitly forbidden). -- O__ ---- Peter Dalgaard Ă˜ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalga...@biostat.ku.dk) FAX: (+45) 35327907 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel