2012-06-27 34 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"