I would expect that several math operations should always return values with a class of numeric. If the input is defined with multiple classes, however, the class attribute is preserved. I would think this may have some unintended side-effects. Here's an example:

> sessionInfo()$R.version$version.string
[1] "R version 3.4.0 (2017-04-21)"
> x <- seq.int(5)
> class(x)
[1] "integer"
> class(log(x))
[1] "numeric"
> class(x) <- c("integer", "foo")
> log(x)
[1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379
attr(,"class")
[1] "integer" "foo"
> x + 0.5
[1] 1.5 2.5 3.5 4.5 5.5
attr(,"class")
[1] "integer" "foo"

I do see the note in ?Arithmetic that states "All attributes (including class) are preserved if there is no coercion". Is this correct, or should the returned value have an updated class of c("numeric", "foo")? Should foo have its own methods to coerce the output to numeric?

Thanks,
Cole

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to