[Rd] behavior of as.integer("5000000000")

Avraham Adler avraham.adler at gmail.com
Tue Apr 14 08:24:19 CEST 2015


On Tue, Apr 14, 2015 at 1:19 AM, Hervé Pagès <hpages at fredhutch.org> wrote:
> 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:


Hello, Hervé

Per help("as.integer"): "Note that current implementations of R use
32-bit integers for integer vectors, so the range of representable
integers is restricted to about +/-2*10^9: doubles can hold much
larger integers."

5000000000 ~ 2^32.2 > 2^32 > 2*10^9

Avi


>
>   ‘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.
>
> Thanks,
> H.
>
> --
> Hervé Pagès
>
> Program in Computational Biology
> Division of Public Health Sciences
> Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N, M1-B514
> P.O. Box 19024
> Seattle, WA 98109-1024
>
> E-mail: hpages at fredhutch.org
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



More information about the R-devel mailing list