2012-11-27 221 views
7

如何使用一個命令指定整個R會話期間顯示的位數?也就是說,我怎樣才能得到值0總是顯示爲0.0?我試過命令options(digits=1),但0仍顯示爲0而不是0.0。我真的試圖避免將每個命令都包含在print(ifelse(x==0,"0.0",x))之類的東西中。格式化R中的所有小數位數

如果解決這個問題的方法如5顯示爲5.0,那也不錯。

+0

這屬於「你可以,但你應該嗎?」除了某些個人美學之外,沒有其他理由可以做到這一點,並且在處理整數與浮點數時可能會誤導你。請記住,顯示內容與存儲數字的精度無關,此外,在sprintf到文件時強制執行這種格式化操作是微不足道的。 –

回答

6

我不確定是否有尾隨0的options。一種可能性是擁有自己的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) 
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