[Rd] stats::poly() stopped working for Date input -- intentional?
Martin Maechler
m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Fri Jul 8 16:34:43 CEST 2022
>>>>> Michael Chirico via R-devel
>>>>> on Thu, 7 Jul 2022 22:17:12 -0700 writes:
> SVN#80126 added rep.difftime, which means rep(as.difftime(0,
> units="secs")) retains the "datetime" class.
(yes, by me, March 2021), this was fixing PR#18066
==> https://bugs.r-project.org/show_bug.cgi?id=18066 )
Thank you, Michael, for the report!
> A consequence of this is that stats::poly() no longer accepts
> Date/POSIXct input (because poly calls outer() on the de-meaned input,
> which rep()):
> # works on R 3.6.3 (and probably everything < 4.1.0)
> # but on R 4.1.3 (and probably everything >= 4.1.0):
> stats::poly(Sys.Date() - 0:4, 3)
> # Error in Ops.difftime(X, Y, ...) : '^' not defined for "difftime" objects
> Is this intentional?
Well, actually I think it was not intentional that poly()
worked at all with Date/POSIXct input, ..
OTOH you *did* encounter it.
Note that
> poly(as.Date("2020-2-2") - 0:3, 2, raw = TRUE)
Error in Ops.Date(X, Y, ...) : ^ not defined for "Date" objects
>
happens (I think) in all versions of R, i.e., even before the
rep() extension.
> If not, a simple patch is to call 'x <- as.double(x)' before de-meaning.
well, yes, in that branch of the source code.
... and a similar call for the raw = TRUE case.
At first, this seems to make sense to me,
but actually it will break when someone uses
poly(<complex>, ..)
[ Also: what about the "prediction" case (coef = <specified>) ?
could you use prediction of an lm() for your real use case ? ]
---
Maybe it makes most sense if you open an R bugzilla entry for
this (including part of our current dialogue).
Thank you again,
Martin
More information about the R-devel
mailing list