我正在尝试读取数字为5或6位小数的.csv文件。但R似乎会自动截断我的号码。
我的原始数据相似
4445.32433,41.9194,15625.68189,...
16.27793374,3838.070873,189.9342746
这就是我得到的
$ V3 : num 4445.32 16.28 1049.5 36.91 9.52 ...
$ V4 : num 41.9 3838.1 100.6 43.8 11.3 ...
然而,对于部分专栏,我得到了这个
$ V39 : num 1.02e-05 2.67e-01 1.16e-03 7.12e-04 2.14e-04 ...
$ V40 : num 0.221222 0.072993 0.004526 0.002724 0.000817 ...
R截断我的数据的逻辑是什么?
我如何控制它?在阅读时使用colClasses=c("double")
似乎毫无效果。
感谢。
答案 0 :(得分:3)
R根本不会截断您的数据。您的数据已成功读取而不会丢失任何精度。您在屏幕上看到的四舍五入只是print
的结果。试试df$v3[1]
,你会看到我的意思。
虽然您可以按options(digits)
控制要打印的位数,但无需执行此操作。
答案 1 :(得分:1)
完整分辨率由R存储,您只是看到控制台上显示的舍入值。看看函数:options(digits=6)
。
有关详细信息,请参阅此问题:Formatting Decimal places in R
答案 2 :(得分:0)
我现在遇到了类似的问题。我将值从一个 Excel 文件复制粘贴到另一个。在 excel 中,这些值看起来不错,但是当您将其保存为 csv 文件时,这些值将仅保留其显示的精度点。我猜这是 excel 的一个错误/功能 - 它们从剪贴板中获取值,而不是从实际文件中获取。
我目前的解决方法是增加这个复制粘贴列的小数,直到它足以满足我的需要。