range( <dates>, na.rm = TRUE ) (PR#10508)
(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") ){....}
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