如何在R读取文件时避免数值舍入,保留全部小数位?
解决R中read.table读取数值舍入/显示不全的问题
首先要明确:R默认只是在打印展示时截断了小数位,实际读取的数据精度大概率是完整保留的,你可以先验证这一点:
- 用
dput(your_data$your_column)查看该列的原始存储值,能看到完整的精度; - 或者用
print(your_data$your_column, digits = 20)强制打印全部小数位。
如果确实是读取过程中丢失了精度(比如文件本身是完整的,但R读取时没识别全),或者想确保读取和显示都保留完整精度,可以试试以下方法:
1. 读取时指定数据类型
在read.table中设置colClasses = "double",强制R按双精度数值类型读取数据,避免自动转换时的精度损失:
your_data <- read.table("your_file.txt", colClasses = "double", header = TRUE)
(如果你的文件没有表头,去掉header = TRUE即可)
2. 调整默认打印精度
如果只是显示时看不到完整小数位,修改R的全局打印设置,让默认显示更多位数:
options(digits = 20)
之后直接打印数据框或变量,就能看到完整的小数位了。如果不想修改全局设置,也可以在打印单个变量时临时指定精度:
print(your_data$target_column, digits = 20)
额外注意
确保你的原始数据文件本身是完整保存的——如果文件里的数值已经被截断成了几位小数,那R也没办法恢复丢失的精度。
内容的提问来源于stack exchange,提问作者rheabedi1
相关产品推荐
相关产品推荐

