我的数据框有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
答案 0 :(得分:1)
您可以使用bit64包来表示如此大的数字:
library(bit64)
as.integer64("587739706883375408")
# integer64
# [1] 587739706883375408
as.integer64("587739706883375408") + 1
# integer64
# [1] 587739706883375409