设置打印的默认小数位数

时间:2012-06-27 14:22:49

标签: r decimal

我正在运行代码来生成输出,我希望所有输出都以1位小数打印。但是代码使用了我一般使用的函数,我不想在这些函数中指定打印输出是舍入的。

此问题Formatting Decimal places in R的答案建议使用options(digits=2)round(x, digits=2)

第一个选项是一般设置,非常适合将1.234四舍五入到1.2,但会将12.345打印为12

第二个选项如果放在函数中但我不想触及它们会起作用。如何设置这一般?

2 个答案:

答案 0 :(得分:8)

你可以这样做:

print <- function(x, ...) {
    if (is.numeric(x)) base::print(round(x, digits=2), ...) 
    else base::print(x, ...)
}

答案 1 :(得分:5)

我喜欢formatC来打印具有指定小数位数的数字。这样,在1"1.0"时,digits = 1应始终打印为format = "f"。您可以为类数字对象创建S3打印方法,如下所示:

print.numeric<-function(x, digits = 1) formatC(x, digits = digits, format = "f")

print(1)
# [1] "1.0"

print(12.4)
# [1] "12.4"

print(c(1,4,6.987))
# [1] "1.0" "4.0" "7.0"

print(c(1,4,6.987), digits = 3)
# [1] "1.000" "4.000" "6.987"