gpt4 book ai didi

r - 导入具有许多数字的(64位)整数时,R中出现奇怪的错误

转载 作者:行者123 更新时间:2023-12-04 04:53:40 26 4
gpt4 key购买 nike

我正在导入具有单个列的csv,该列包含非常长的整数(例如:2121020101132507598)

a<-read.csv('temp.csv',as.is=T)



当我将这些整数作为字符串导入时,它们可以正确通过,但是当作为整数导入时,最后几位数字会更改。我不知道发生了什么...

1 "4031320121153001444" 4031320121153001472
2 "4113020071082679601" 4113020071082679808
3 "4073020091116779570" 4073020091116779520
4 "2081720101128577687" 2081720101128577792
5 "4041720081087539887" 4041720081087539712
6 "4011120071074301496" 4011120071074301440
7 "4021520051054304372" 4021520051054304256
8 "4082520061068996911" 4082520061068997120
9 "4082620101129165548" 4082620101129165312

最佳答案

正如其他人指出的那样,您不能表示那么大的整数。但是R并未将这些值读取为整数,而是将其读取为 double 数字。

double 只能将数字精确地表示为约16位,这就是为什么您看到数字在16位后四舍五入的原因。有关可能的解决方案,请参见gmpRmpfrint64软件包。尽管我看不到其中任何一个读取文件的功能,但也许您可以通过查看它们的来源来制作一些东西。

更新:
将文件放入int64对象的方法如下:

# This assumes your numbers are the only column in the file
# Read them in however, just ensure they're read in as character
a <- scan("temp.csv", what="")
ia <- as.int64(a)

关于r - 导入具有许多数字的(64位)整数时,R中出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441035/

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