7

我正在运行代码来生成输出,我希望所有输出都以小数点后 1 位打印。然而,代码使用了我通常使用的函数,我不想在这些函数中指定打印输出是四舍五入的。

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

第一个选项是一般设置,非常适合四舍五入1.2341.2但会打印12.34512

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

4

2 回答 2

8

你可以这样做:

print <- function(x, ...) {
    if (is.numeric(x)) base::print(round(x, digits=2), ...) 
    else base::print(x, ...)
}
于 2012-06-27T14:57:35.773 回答
5

我喜欢formatC打印具有指定小数位数的数字。这样,1应始终打印为"1.0"whendigits = 1format = "f". 您可以为 numeric 类的对象创建 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"
于 2012-06-27T16:35:50.607 回答