2015-09-15 3 views
2

Я заметил, что если у меня есть число больше 10 цифр, функция as.integer вернет NA.Почему as.integer возвращает NA в R?

Например:

as.integer(10000000000) 

даст NA.

Почему это происходит? Думаю, это может иметь какое-то отношение к хранению целых чисел? Как я могу обойти эту проблему?

Спасибо.

+1

32-битные целые числа, поэтому 2^31-1 – jenesaisquoi

ответ

7

Вы можете найти предел для целых чисел:

> .Machine$integer.max 
[1] 2147483647 

Любые большие значения будут интерпретироваться как NA

> as.integer(.Machine$integer.max) 
[1] 2147483647 
> as.integer(.Machine$integer.max+1) 
[1] NA 
Warning message: 
NAs introduced by coercion to integer range 

Если вам нужно обрабатывать большие значения, либо использовать as.numeric (числовые может обрабатывать более высокие значения, чем целые числа) или пакет, такой как gmp (пакет с арифметикой с несколькими точками).

+0

Примечание: 'gmp :: as.bigz (.Machine $ integer.max + 1)' дает '2147483648' –

+0

@Pascal, спасибо, забыл ответить на вопрос , – DGKarlsson

Смежные вопросы