R正在改变我的变量值

时间:2018-05-21 13:23:42

标签: r variables dataframe output precision

我的数据框有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 :(得分:1)

您可以使用bit64包来表示如此大的数字:

library(bit64)
as.integer64("587739706883375408")
# integer64
# [1] 587739706883375408
as.integer64("587739706883375408") + 1 
# integer64
# [1] 587739706883375409