Multiple return values / bug in rpart?
On 13/08/2013 13:54, Terry Therneau wrote:
I don't remember what rpartpl once did myself; as you point out it is a routine that is no longer used and should be removed. I've cc'd Brian since he maintains the rpart code. Long ago return() with multiple arguments was a legal shorthand for returning a list. This feature was depricated in Splus, I think even before R rose to prominence. I vaguely remember a time when it's usage generated a warning.
Yes, usage generated a warning then an error, but not parsing. > foo <- function() return(a=1, b=2) > foo() Error in return(a = 1, b = 2) : multi-argument returns are not permitted
The fact that I've never noticed this unused routine is somewhat embarrassing. Perhaps I need a "not documented, never called" addition to R CMD check to help me along.
But you cannot know 'never called'. This is callable by rpart:::rpartpl() : it is also possible that functions in your namespace are called via eval()ing expressions at R or C level. (There are examples around for which that is the only usage.)
Terry Therneau
In the recommended package rpart (version 4.1-1), the file rpartpl.R contains the following line: return(x = x[!erase], y = y[!erase]) AFAIK, returning multiple values like this is not valid R. Is that correct? I can't seem to make it work in my own code. It doesn't appear that rpartpl.R is used anywhere, so this may have never caused an issue. But it's tripping up my R compiler. Thanks, Justin Talbot
Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595