From ripley at stats.ox.ac.uk  Tue Dec 11 17:20:15 2007
From: ripley at stats.ox.ac.uk (ripley at stats.ox.ac.uk)
Date: Tue, 11 Dec 2007 17:20:15 +0100 (CET)
Subject: [Rd] range( <dates>, na.rm = TRUE ) (PR#10508)
Message-ID: <20071211162015.9874E282EFF8@mail.pubhealth.ku.dk>

I don't think that is the right fix.  All methods for min/max should now 
support na.rm=TRUE (but not finite=TRUE), so range.default should just 
call min and max with that argument.

I'd need to verify those 'should's first ....

Brian

On Tue, 11 Dec 2007, Peter Dalgaard wrote:

> (Drats! Jitterbug is playing tricks with the PR# again. Attempting to
> refile so that we can kill PR#10509)
>
> Peter Dalgaard wrote:
>> Kurt.Hornik at wu-wien.ac.at wrote:
>>
>>> ------- Start of forwarded message -------
>>> Date: Tue, 13 Nov 2007 21:44:57 +0100
>>> To: Steve Mongin <sjm at ccbr.umn.edu>
>>> Cc: cran at r-project.org
>>> Subject: Re: range( <dates>, na.rm = TRUE )
>>> In-Reply-To: <200711062044.OAA14064 at minnow.ccbr.umn.edu>
>>> Reply-To: Kurt.Hornik at wu-wien.ac.at
>>> From: Kurt Hornik <Kurt.Hornik at wu-wien.ac.at>
>>> X-AntiVirus: checked by AntiVir MailGate (version: 2.1.3-2; AVE: 7.6.0.34; VDF: 7.0.0.210; host: fsme.wu-wien.ac.at)
>>> X-Virus-Scanned: ClamAV 0.90.3/4768/Tue Nov 13 18:25:08 2007 on pocken.wu-wien.ac.at
>>> X-Virus-Status: Clean
>>>
>>>
>>>
>>>>>>>> Steve Mongin writes:
>>>>>>>>
>>>>>>>>
>>>
>>>
>>>> Dear CRAN:
>>>> I am running 'R' on Linux as follows:
>>>>
>>>>
>>>
>>>
>>>>> version
>>>>>
>>>>>
>>>>                _
>>>>   platform       i686-redhat-linux-gnu
>>>>   arch           i686
>>>>   os             linux-gnu
>>>>   system         i686, linux-gnu
>>>>   status
>>>>   major          2
>>>>   minor          6.0
>>>>   year           2007
>>>>   month          10
>>>>   day            03
>>>>   svn rev        43063
>>>>   language       R
>>>>   version.string R version 2.6.0 (2007-10-03)
>>>>
>>>>
>>>
>>>
>>>> I have a question about the behavior of "range()" with missing dates.
>>>>
>>>>
>>>
>>>
>>>> With the previous version (2.4?) , the command:
>>>>
>>>>
>>>
>>>
>>>>> range( as.Date( c( "2007-11-06", NA ) ), na.rm = TRUE )
>>>>>
>>>>>
>>>
>>>
>>>> yielded:
>>>>
>>>>
>>>
>>>
>>>>> [1] "2007-11-06" "2007-11-06"
>>>>>
>>>>>
>>>
>>>
>>>> Now I get:
>>>>
>>>>
>>>
>>>
>>>>> [1] NA NA
>>>>>
>>>>>
>>>
>>>
>>>> Is this a bug?
>>>>
>>>>
>>>
>>>
>>>> Yes, I see in the "What's New" page:
>>>>
>>>>
>>>
>>>
>>>>   "The Math2 and Summary groups (round, signif, all, any, max, min,
>>>>    summ, prod, range) are now primitive."
>>>>
>>>>
>>>
>>>
>>>> Is the "primitive" characteristic supposed to behave as above with
>>>> missing dates?
>>>>
>>>>
>>>
>>>
>>>> Thanks for any help that you can provide.
>>>>
>>>>
>>> This is really a question for r-devel or r-bugs, I think, but not for
>>> the CRAN maintainers.
>>>
>>> I would think it is a bug.  Perhaps simply file a bug report?
>>>
>>>
>>>
>> Again? ;-)
>>
>> The bug is here:
>>
>>
>>> range.default
>>>
>> function (..., na.rm = FALSE, finite = FALSE)
>> {
>>     x <- c(..., recursive = TRUE)
>>     if (is.numeric(x)) {
>>         if (finite)
>>             x <- x[is.finite(x)]
>>         else if (na.rm)
>>             x <- x[!is.na(x)]
>>     }
>>     c(min(x), max(x))
>> }
>> <environment: namespace:base>
>>
>> Objects of class Date are not considered numeric, so we end up taking
>> min and max without removing NA.
>>
>> One solution could be
>>
>> if (is.numeric(x) || inherits(x, "Date") ){....}
>>
>>
>>
>
>
>

-- 
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



[Rd] range( <dates>, na.rm = TRUE ) (PR#10508)
ripley at stats.ox.ac.uk