Почему при преобразовании числа в целое я получаю NA?

Здравствуйте, я пытаюсь преобразовать число в целое число в R, но когда число слишком велико, оно преобразуется в NA, почему? Как я могу избежать этой проблемы?

просто пример

>df[,2] 
[1]          0          0          0          0          0          0          0    5361230  780600500          0          0          0
 [13]  764111150          0          0          0          0         9999816350 0         23237410347   91198500 1957077150  124890245   64232150

>as.integer(df[,2])
 [1]          0          0          0          0          0          0          0    5361230  780600500          0          0          0
 [13]  764111150          0          0          0          0         NA          0         NA   91198500 1957077150  124890245   64232150

Я хотел бы сохранить NA как исходный номер, возможно ли это? спасибо


person Dr.PhilCol    schedule 29.05.2019    source источник
comment
число выходит за пределы диапазона целых чисел.   -  person jogo    schedule 29.05.2019
comment
Вы можете либо найти выброс с помощью boxplot, либо использовать квантиль   -  person akrun    schedule 29.05.2019


Ответы (1)


Ваше число слишком велико, чтобы поместиться в целое число:

23237410347 > .Machine$integer.max
## [1] TRUE

Может быть, достаточно использовать double. Кроме того, существует пакет, поддерживающий 64-битные целые числа (R изначально поддерживает 32-битные числа).

library(bit64)

as.integer64(23237410347)
## integer64
## [1] 23237410347
person G. Grothendieck    schedule 29.05.2019