[Rd] sapply(Date, is.numeric) (PR#12239)
maechler at stat.math.ethz.ch
maechler at stat.math.ethz.ch
Thu Aug 7 12:04:53 CEST 2008
>>>>> "RobMcG" == McGehee, Robert <Robert.McGehee at geodecapital.com>
>>>>> on Tue, 29 Jul 2008 15:40:37 -0400 writes:
RobMcG> FYI,
RobMcG> I've tried posting the below message twice to the bug tracking system,
[....... r-bugs problems discussed in a separate thread ....]
RobMcG> R-developers,
RobMcG> The results below are inconsistent. From the documentation for
RobMcG> is.numeric, I expect FALSE in both cases.
>> x <- data.frame(dt=Sys.Date())
>> is.numeric(x$dt)
RobMcG> [1] FALSE
>> sapply(x, is.numeric)
RobMcG> dt
RobMcG> TRUE
RobMcG> ## Yet, sapply seems aware of the Date class
>> sapply(x, class)
RobMcG> dt
RobMcG> "Date"
Yes, thanks a lot, Robert, for the report.
That *is* a bug somewhere in the .Internal(lapply(...)) C code,
when S3 dispatch of primitive functions should happen.
Here's an R scriptlet exposing a 2nd example
### lapply(list, FUN)
### ------------------ seems to sometimes fail for
### .Primitive S3-generic functions
(ds <- seq(from=Sys.Date(), by=1, length=4))
##[1] "2008-07-30" "2008-07-31" "2008-08-01" "2008-08-02"
ll <- list(d=ds)
lapply(list(d=ds), round)
## -> Error in lapply(list(d = ds), round) : dispatch error
## or -- related to bug report by Robert McGehee on R-devel, on 2008-07-29:
sapply(list(d=ds), is.numeric)
## TRUE
## in spite of
is.numeric(`[[`(ll,1)) ## FALSE , because of
is.numeric.date
## or
round(`[[`(ll,1))
## [1] "2008-07-30" "2008-07-31" "2008-08-01" "2008-08-02"
##-----------------------------
But I'm currently too much tied up with other duties,
to find and test bug-fix.
Martin Maechler, ETH Zurich and R-Core Team
More information about the R-devel
mailing list