From maechler at lynne.stat.math.ethz.ch  Tue Apr 14 08:32:18 2015
From: maechler at lynne.stat.math.ethz.ch (Martin Maechler)
Date: Tue, 14 Apr 2015 08:32:18 +0200
Subject: [Rd] behavior of as.integer("5000000000")
In-Reply-To: <552CA376.7000601@fredhutch.org>
References: <552CA376.7000601@fredhutch.org>
Message-ID: <21804.46194.893705.440976@stat.math.ethz.ch>


> 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
> ...................



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