R меняет значение моей переменной само по себе - PullRequest
0 голосов
/ 21 мая 2018

У меня есть фрейм данных, который имеет поле id со значениями, равными этим двум:

587739706883375310

587739706883375408

Проблема в том, что, когда я прошу R показать эти два числа, вывод, который я получаю,следующее:

587739706883375360

587739706883375360

, которые не являются действительными значениями моего ID поля, как мне это решить?

Для вашей информации: я выполнилoptions(scipen = 999) в R не переводит мой номер в научную запись.Эта проблема также возникает в консоли R, если я ввожу эти примеры номеров, я получаю ту же печать, как показано выше.

РЕДАКТИРОВАТЬ: кто-то спросил

dput(yourdata$id)

Я сделал это, и результат был:

c(587739706883375360, 587739706883375360, 587739706883375488, 587739706883506560, 587739706883637632, 587739706883637632, 587739706883703040)

Для сравнения, исходные данные в файле CSV:

587739706883375310,587739706883375408,587739706883375450,587739706883506509,587739706883637600,587739706883637629,587739706883703070

Я также провел следующий тест с одним из этих чисел:

> 587739706883375408
[1] 587739706883375360
> as.double(587739706883375408)
[1] 587739706883375360
> class(as.double(587739706883375408))
[1] "numeric"
> is.double(as.double(587739706883375408))
[1] TRUE

1 Ответ

0 голосов
/ 21 мая 2018

Вы можете использовать пакет bit64 для представления таких больших чисел:

library(bit64)
as.integer64("587739706883375408")
# integer64
# [1] 587739706883375408
as.integer64("587739706883375408") + 1 
# integer64
# [1] 587739706883375409
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...