为什么 R 在数字数据类型中不显示小数点后的数字?



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

有人能告诉我如何解决这个问题吗?

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

> 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,只有前两个会显示,等等。

最新更新