2012-06-27 27 views
7

我正在运行代码以生成输出,我希望所有输出都打印为1位小数。然而,代码使用我通常使用的函数,我不想在这些中指定打印输出是舍入的。设置打印的默认小数位数

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

第一种选择是这是伟大的四舍五入1.2341.2而是将打印12.34512

如果把函数内的,但我不想去碰它们,第二种选择将工作的一般设置。如何设置这一般?

回答

8

你可以这样做:

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

感谢您的建议。在尝试此我到达相同的问题设置选项(位数= 2) - '#load打印功能 X < - 12.34 Z =打印(X) [1] 12' - 有什么我”失踪了? – BuckyOH

+1

您是否已将“数字”选项重置为其默认值?在新的会议中再次尝试。 –

+0

那真是令人尴尬,现在似乎工作。谢谢。 – BuckyOH

5

我喜欢formatC与小数位的指定数量的打印数量。这样,当digits = 1format = "f"时,1应始终打印为"1.0"。您可以为类数字的对象创建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"