On Wed, 30 Jul 2008, Martin Maechler wrote:

"RobMcG" == McGehee, Robert <[EMAIL PROTECTED]>
    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.

The bug is in do_is, which uses CHAR(PRINTNAME(CAR(call))), and when called from lapply that gives "FUN" not "is.numeric". The root cause is the following comment

    FUN = CADR(args);  /* must be unevaluated for use in e.g. bquote */

and hence that the function in the *call* passed to do_is can be unevaluated.

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

And that's a separate issue, in DispatchGroup which states that arguments have been evaluated (true) but the 'call' from lapply gives the unevaluated arguments and so there is a mismatch.

I'm testing fixes for both.

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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


--
Brian D. Ripley,                  [EMAIL PROTECTED]
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

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to