[Rd] For integer vectors, `as(x, "numeric")` has no effect.
Benjamin Tyner
btyner at gmail.com
Tue Dec 8 00:37:08 CET 2015
Perhaps it is not that surprising, given that
> mode(1L)
[1] "numeric"
and
> is.numeric(1L)
[1] TRUE
On the other hand, this is curious, to say the least:
> is.double(as(1L, "double"))
[1] FALSE
> Here's the surprising behavior:
>
> x <- 1L
> xx <- as(x, "numeric")
> class(xx)
> ## [1] "integer"
>
> It occurs because the call to `as(x, "numeric")` dispatches the coerce
> S4 method for the signature `c("integer", "numeric")`, whose body is
> copied in below.
>
> function (from, to = "numeric", strict = TRUE)
> if (strict) {
> class(from) <- "numeric"
> from
> } else from
>
> This in turn does nothing, even when strict=TRUE, because that
> assignment to class "numeric" has no effect:
>
> x <- 10L
> class(x) <- "numeric"
> class(x)
> [1] "integer"
>
> Is this the desired behavior for `as(x, "numeric")`?
More information about the R-devel
mailing list