8

如何使用一个命令指定整个 R 会话期间显示的位数?也就是说,我怎样才能获得0始终显示为的值0.0?我已经尝试了命令options(digits=1),但0仍然显示为0而不是0.0。我真的很想避免将每个命令包装在类似print(ifelse(x==0,"0.0",x)).

如果这个问题的解决方案5显示为5.0.

4

2 回答 2

6

我不确定是否有一个optionsfor 尾随 0。一种可能性是拥有自己的 print.numeric 和 print.integer 函数。

print.integer <- print.numeric <- function(..., digs=1)   {
    print(format(as.numeric(...), nsmall=digs), quote=F)
}

它仍然需要print,但更整洁

> print(-1:5)
[1] -1.0  0.0  1.0  2.0  3.0  4.0  5.0


或者,您可以nsmall直接使用格式中的参数。

mat <- matrix(as.numeric(rep(0:3, 5)), ncol=4)
print(format(mat, nsmall=2), quote=F)
于 2012-11-27T22:26:57.770 回答
0

你可以试试我的包formattable

> # devtools::install_github("renkun-ken/formattable")
> library(formattable)
> n <- formattable(0, format = "f", digits = 1)
> n
[1] 0.0

nformattable, numeric在算术计算中保留其格式的向量。

> n+5
[1] 5.0
于 2015-05-30T13:00:16.910 回答