gpt4 book ai didi

r - R中的科学记数法问题

转载 作者:行者123 更新时间:2023-12-01 00:56:02 26 4
gpt4 key购买 nike

我有一个 20 位数字的 ID 变量。一旦我读取了 R 中的数据,它就会更改为科学记数法,然后如果我将相同的 id 写入 csv 文件,则 ID 的值会发生变化。

例如,运行下面的代码应该将 x 的值打印为“ 12345678912345678912 ”,但它打印出“ 12345675676072307”456792307

代码:

options(scipen=999)

x <- 12345678912345678912

打印(x)

输出:
[1] 12345678912345679872

我的问题是:

1)为什么会这样?

2)如何解决这个问题?

我知道这与 R 中数据类型的存储有关,但我仍然认为应该有一些方法来处理这个问题。我希望我清楚这个问题。

我不知道是否有人问过这个问题,所以如果它重复,请指向我一个链接。我将删除这篇文章

我已经经历了 this ,所以我可以解决我的问题,但我无法解决它。

任何帮助将不胜感激。谢谢

最佳答案

默认情况下,R 不处理数字大于 2147483647L 的整数。

如果您将 L 附加到您的号码(告诉 R 它是 integer ),您将得到:

x <- 12345678912345678912L
#Warning message:
#non-integer value 12345678912345678912L qualified with L; using numeric value

这也解释了最后一位数字的变化,因为 R 将数字存储为 double

我认为 gmp -package 应该能够处理大数字。因此,您应该接受精度损失,将它们存储为字符字符串,或者使用 gmp 包中的数据类型。

关于r - R中的科学记数法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27919403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com