【问题标题】:R is changing my variable value by itselfR正在自己改变我的变量值
【发布时间】:2018-10-31 04:09:45
【问题描述】:

我有一个数据框,其中有一个 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

【问题讨论】:

标签: r variables dataframe output precision


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多