I think this bug highlights a much more fundamental issue:

Conceptually, as.numeric should throw an error for unordered factors or return NaN values or maybe behave like as.numeric(as.character(<factor>)). Even a warning would be an improvement. I know a change like this is pretty much impossible but the examples in help("numeric") already acknowledge how unintuitive current behavior is. I suspect almost everbody teaching R to beginners covers what as.numeric(<factor>) actually does (cf. The R Inferno, Section 8.2.1). And that shouldn't be necessary.

Roland

Am 22.10.2025 um 11:11 schrieb Martin Maechler:
Roland Fuß via R-devel
     on Wed, 22 Oct 2025 10:24:07 +0200 writes:
     > This doesn't seem intended.

You are right.  The code change, reverting to previous behaviour
notably for "Date",
was prompted on this R-devel list,
     https://stat.ethz.ch/pipermail/r-devel/2022-July/081850.html

But that the change allows poly(<factor>, .) to work was overlooked (by
me and anyone else ..) and is a bug we will change.

     > See:

     > 
https://stackoverflow.com/questions/79795583/why-does-poly-work-for-unordered-factors-it-previously-did-not-work

As was already raised in the above SO thread,
what should happen for *ordered* factors is less obvious.
A warning was proposed, but I thought that this was too harsh;
hence, we could use message(), or just keep allowing it.

Opinions?

Martin

--
Martin Maechler
ETH Zurich  and   R Core team

     > --
     > Dr. Roland Fuß

     > Thünen-Institut für Agrarklimaschutz/
     > Thünen Institute of Climate-Smart Agriculture

     > Bundesallee 65
     > D-38116 Braunschweig, Germany

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to