read.csv / read.table改变数值

时间:2017-06-26 17:13:17

标签: r read.table read.csv

这是最奇怪的错误,似乎read.csv / read.table会在数字太大时更改数字的值

read.table(text="a,b
1123363730,5000000000000011111",sep=",",header=TRUE)
#            a                   b
# 1 1123363730 5000000000000011264

b的值改变了!

read.table(text="a,b
1123363730,5000000000000011111",sep=",")
#           V1                  V2
# 1          a                   b
# 2 1123363730 5000000000000011111

现在值正确(作为字符串)

我认为它与数字有关,但它非常烦人,我如何确保加载我的csv中的内容?

2 个答案:

答案 0 :(得分:1)

您尝试导入过大的整数 - 它将被舍入并以科学记数法表示。

你可以看到超过最大整数1的效果:

> str(.Machine$integer.max)
 int 2147483647
> str(.Machine$integer.max + 1)
 num 2.15e+09

相信最大整数对于每个独特的机器和R配置是唯一的(如果我错了,请有人纠正我。)

答案 1 :(得分:0)

library(bit64)

tst <- read.table(text="a,b
                  1123363730,5000000000000011111",sep=",",
                  header=TRUE, colClasses = "integer64")

print(tst$b)