[Rd] range( <dates>, na.rm = TRUE ) (PR#10508)

P.Dalgaard at biostat.ku.dk P.Dalgaard at biostat.ku.dk
Tue Dec 11 17:40:11 CET 2007


Prof Brian Ripley wrote:
> I don't think that is the right fix.  All methods for min/max should
> now support na.rm=3DTRUE (but not finite=3DTRUE), so range.default shou=
ld
> just call min and max with that argument.
>
> I'd need to verify those 'should's first ....
>
OK, that why I didn't touch the sources....

    -p

> 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 =3D 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 date=
s.
>>>>>
>>>>>
>>>>
>>>>
>>>>> With the previous version (2.4?) , the command:
>>>>>
>>>>>
>>>>
>>>>
>>>>>> range( as.Date( c( "2007-11-06", NA ) ), na.rm =3D 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 fo=
r
>>>> 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 =3D FALSE, finite =3D FALSE)
>>> {
>>>     x <- c(..., recursive =3D 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") ){....}
>>>
>>>
>>>
>>
>>
>>
>


--=20
   O__  ---- Peter Dalgaard             =C3=98ster Farimagsgade 5, Entr.B=

  c/ /'_ --- Dept. of Biostatistics     PO Box 2099, 1014 Cph. K
 (*) \(*) -- University of Copenhagen   Denmark          Ph:  (+45) 35327=
918
~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)                  FAX: (+45) 35327=
907



More information about the R-devel mailing list