首页 > 解决方案 > 为什么R在数字数据类型中不显示小数点后的数字?

问题描述

我有一个从文件中读取到 R 中的数据框。数据包含一些数字列,一些数字列在小数点后有数字,而一些列没有。没有小数点后数字的值的列有以下问题:如果我对该列进行一些操作,导致值在小数点后有一些数字。但是,最终的数据有一些数字,例如 22.5,R 没有以这种格式显示值,它只显示 22。但是如果我在 If 条件下检查它,它确认该值实际上是 22.5。当原始数据包含一些小数点时,不会发生这种情况。

谁能让我知道如何解决这个问题?

标签: rdataframetypesnumeric

解决方案


这是一个常见问题解答。 演示文稿可能与内容不同,因为它通常针对有意义的输出进行了优化。非常简单的例子如下:

> df <- data.frame(a=c(10000.12, 10000.13), b=c(42L, 43L))
> df
        a  b
1 10000.1 42
2 10000.1 43
> all.equal(df[1,"a"], 10000.12)
[1] TRUE
> 

所以最后一位数字并没有像测试确认的那样“消失”——它只是超出了显示的(默认为六位)数字。

同样,您始终可以显式显示比(紧凑,默认)显示更多的小数:

> cat(sprintf("%14.8f", df[1,"a"]), "\n")
10000.12000000 
> 

编辑您还可以将默认显示大小增加一个或多个: options(digits=7)是最小的变化,但并非所有列都使用七位数:

> options(digits=7)
> df
         a  b
1 10000.12 42
2 10000.13 43
> 

不用说,如果您有数字,则.123只会显示前两个等。


推荐阅读