From P.Dalgaard at biostat.ku.dk  Tue Dec 11 16:53:21 2007
From: P.Dalgaard at biostat.ku.dk (Peter Dalgaard)
Date: Tue, 11 Dec 2007 16:53:21 +0100
Subject: [Rd] [Kurt.Hornik@wu-wien.ac.at: Re: range( <dates>,
 na.rm = TRUE )] (PR#10508)
In-Reply-To: <20071211152022.342B0282EFF8@mail.pubhealth.ku.dk>
References: <20071211152022.342B0282EFF8@mail.pubhealth.ku.dk>
Message-ID: <475EB271.90202@biostat.ku.dk>

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") ){....}


-- 
   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.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327907



[Rd] [Kurt.Hornik@wu-wien.ac.at: Re: range( <dates>, na.rm = TRUE )] (PR#10508)
Peter Dalgaard