如何使用一個命令指定整個R會話期間顯示的位數?也就是說,我怎樣才能得到值0
總是顯示爲0.0
?我試過命令options(digits=1)
,但0
仍顯示爲0
而不是0.0
。我真的試圖避免將每個命令都包含在print(ifelse(x==0,"0.0",x))
之類的東西中。格式化R中的所有小數位數
如果解決這個問題的方法如5
顯示爲5.0
,那也不錯。
如何使用一個命令指定整個R會話期間顯示的位數?也就是說,我怎樣才能得到值0
總是顯示爲0.0
?我試過命令options(digits=1)
,但0
仍顯示爲0
而不是0.0
。我真的試圖避免將每個命令都包含在print(ifelse(x==0,"0.0",x))
之類的東西中。格式化R中的所有小數位數
如果解決這個問題的方法如5
顯示爲5.0
,那也不錯。
我不確定是否有尾隨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)
你可以試試我的包formattable。
> # devtools::install_github("renkun-ken/formattable")
> library(formattable)
> n <- formattable(0, format = "f", digits = 1)
> n
[1] 0.0
n
是formattable, numeric
矢量,保留其格式在算術計算。
> n+5
[1] 5.0
這屬於「你可以,但你應該嗎?」除了某些個人美學之外,沒有其他理由可以做到這一點,並且在處理整數與浮點數時可能會誤導你。請記住,顯示內容與存儲數字的精度無關,此外,在sprintf到文件時強制執行這種格式化操作是微不足道的。 –