From hpages at fredhutch.org  Tue Apr 14 08:36:14 2015
From: hpages at fredhutch.org (=?UTF-8?B?SGVydsOpIFBhZ8Oocw==?=)
Date: Mon, 13 Apr 2015 23:36:14 -0700
Subject: [Rd] behavior of as.integer("5000000000")
In-Reply-To: <21804.46194.893705.440976@stat.math.ethz.ch>
References: <552CA376.7000601@fredhutch.org>
	<21804.46194.893705.440976@stat.math.ethz.ch>
Message-ID: <552CB55E.9030306@fredhutch.org>

On 04/13/2015 11:32 PM, Martin Maechler 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:
>
> 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.

Sounds good. Thanks Martin,

H.

>
> Martin
>
>
>> --
>> Herv? Pag?s
>> ...................

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



[Rd] behavior of as.integer("5000000000")
=?UTF-8?B?SGVydsOpIFBhZ8Oocw==?=