[Rd] behavior of as.integer("5000000000")
Martin Maechler
maechler at lynne.stat.math.ethz.ch
Tue Apr 14 08:32:18 CEST 2015
> Hi,
> > as.integer("5000000000")
> [1] 2147483647
> Warning message:
> inaccurate integer conversion in coercion
> > as.integer("-5000000000")
> [1] NA
> Warning message:
> inaccurate integer conversion in coercion
> Is this a bug or a feature? The man page suggests it's the
> latter:
I think you mean the "former", a bug.
and I agree entirely, see the following " 2 x 2 " comparison :
> N <- 5000000000000 * 8^-(0:7)
> as.integer(N)
[1] NA NA NA NA 1220703125 152587890 19073486 2384185
Warning message:
NAs introduced by coercion
> as.integer(-N)
[1] NA NA NA NA -1220703125 -152587890 -19073486
[8] -2384185
Warning message:
NAs introduced by coercion
> as.integer(as.character(N))
[1] 2147483647 2147483647 2147483647 2147483647 1220703125 152587890 19073486 2384185
Warning message:
inaccurate integer conversion in coercion
> as.integer(as.character(-N))
[1] NA NA NA NA -1220703125 -152587890 -19073486
[8] -2384185
Warning message:
inaccurate integer conversion in coercion
> ‘as.integer’ attempts to coerce its argument to be of integer
> type. The answer will be ‘NA’ unless the coercion succeeds.
> even though someone could always argue that coercion of "5000000000"
> succeeded (for some definition of "succeed").
> Also is there any reason why the warning message is different than
> with:
> > as.integer(-5000000000)
> [1] NA
> Warning message:
> NAs introduced by coercion
> In the case of as.integer("-5000000000"), it's not really that the
> conversion was "inaccurate", it's a little bit worse than that. And
> knowing that NAs where introduced by coercion is important.
Yes.
The message is less a problem than the bug, but I agree we
should try to improve it.
Martin
> --
> Hervé Pagès
> ...................
More information about the R-devel
mailing list