Зачем конвертировать число в целое число я получаю NA? - PullRequest
0 голосов
/ 29 мая 2019

Здравствуйте. Я пытаюсь преобразовать число в 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, поскольку исходное число возможно?спасибо

1 Ответ

3 голосов
/ 29 мая 2019

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

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

Может быть, это достаточно хорошо, чтобы использовать двойной. Также есть пакет, который поддерживает 64-битные целые числа (R изначально поддерживает 32-битные).

library(bit64)

as.integer64(23237410347)
## integer64
## [1] 23237410347
...