这是最奇怪的错误,似乎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中的内容?
答案 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)