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