Hi Kenny,
yes, there's only so much you can do with S3 methods penetrating other
packages' code; I?aki discusses this in the blog about the r-quantities
project found at:
https://www.r-spatial.org/r/2018/08/31/quantities-final.html#fitting-linear-models-with-quantities
I'm not sure whether making "var" a generic would not shift the
problem
to the next function not being generic, you could experiment with that.
On 1/20/19 6:39 PM, Kenny Bell wrote:> Hi all,
>
> I am running into problems using `summary.lm` as calling `var` on a `units`
> object does not retain the `units` attribute.
>
> The units package addresses this issue for `mean` by implementing
> `mean.units`:
>
> units:::mean.units
> function (x, ...)
> {
> .as.units(NextMethod(), units(x))
> }
>
> This is, however, not possible for `var` (as it's not a generic), which
> breaks `summary.lm`:
>
> ```
> library(units)
> #> udunits system database from C:/R/Library/3.5/units/share/udunits
> iris$Sepal.Length <- set_units(iris$Sepal.Length, "cm")
>
> summary(lm(Sepal.Length ~ Sepal.Width,
> data = iris))
> #> Error in Ops.units(mean(f)^2, var(f)): both operands of the
expression
> should be "units" objects
> ```
>
> Created on 2019-01-21 by the [reprex package](https://reprex.tidyverse.org)
> (v0.2.1.9000)
>
> Apologies if `stats` package emails shouldn't go here.
>
> Cheers,
> Kenny
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Edzer Pebesma
Institute for Geoinformatics
Heisenbergstrasse 2, 48151 Muenster, Germany
Phone: +49 251 8333081