R保持大量
我有一个CSV(我从data.table中使用fread读取),其中有一些相当大的数字,我将其转换为feather格式,然后另存为feather文件,但当我在这个新文件中读取时,数字完全不同。这发生在我转换的777个不同的CSV文件上,因此它不是特定于CSV的。我试着制作一个可复制的例子,但发现如果我在R中生成数字就没有问题了 使用CSV中的数据进行编码:R保持大量,r,csv,data.table,largenumber,feather,R,Csv,Data.table,Largenumber,Feather,我有一个CSV(我从data.table中使用fread读取),其中有一些相当大的数字,我将其转换为feather格式,然后另存为feather文件,但当我在这个新文件中读取时,数字完全不同。这发生在我转换的777个不同的CSV文件上,因此它不是特定于CSV的。我试着制作一个可复制的例子,但发现如果我在R中生成数字就没有问题了 使用CSV中的数据进行编码: options(digits = 22) t<-tempfile() i<-as.data.frame(data$total)
options(digits = 22)
t<-tempfile()
i<-as.data.frame(data$total)
head(i)
x
1 10661832289
2 10836572665
3 11011492485
4 11180245212
5 11331994931
6 11486446777
feather::write_feather(i,t)
feather::read_feather(t)
# A tibble: 36 × 1
x
<dbl>
1 5.2676450557158410e-314
2 5.3539782724388232e-314
3 5.4404001462775578e-314
4 5.5237750713302844e-314
5 5.5987493942542471e-314
str(i)
显示了什么?这是您的原始数据,而不是虚构的数据。@HongOoi它显示为str(i):“data.frame”:36 obs。共1个变量:$x:Class'integer64'num[1:36]5.27e-314 5.35e-314 5.44e-314 5.52e-314 5.60e-314。。。我看到它已经有了不正确的数字-你认为这可能与bit64::integer64有关吗?是的。你应该向feather提交问题;作为一种解决方法,在读入变量时,将变量的类指定为numeric
。非常感谢。我会这样做的。
options(digits = 22)
t<-tempfile()
i<-as.data.frame(runif(10,10000000000,13000000000))
head(i)
feather::write_feather(i,t)
feather::read_feather(t)
sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] bit64_0.9-5 bit_1.1-12
loaded via a namespace (and not attached):
[1] lazyeval_0.2.0 plyr_1.8.4 assertthat_0.1 hms_0.3
[5] tools_3.3.3 haven_0.2.1 tibble_1.2 Rcpp_0.12.9
[9] feather_0.3.1 data.table_1.10.4 xlsxjars_0.6.1 rJava_0.9-8
[13] xlsx_0.5.7