2012-11-27 6 views
7

1つのコマンドで、Rセッション全体で表示される桁数を指定するにはどうすればよいですか?つまり、0の値を常に0.0と表示させるにはどうすればよいですか?コマンドoptions(digits=1)を試しましたが、0はまだ0と表示され、0.0では表示されません。私は本当にprint(ifelse(x==0,"0.0",x))のようなもので各コマンドをラップすることを避けようとしています。フォーマットする小数点以下の桁数R

この問題の解決策、たとえば55.0と表示される場合は、これもいいことでしょう。

+0

「これは可能ですが、すべきですか?」これを行うには個人的な美学以外の理由はありませんし、整数と浮動小数点を扱うときにあなたを誤解させるかもしれません。表示される内容は、数値が格納される精度とは無関係であることを覚えておいてください。また、 'sprintf'をファイルに書くときに、この種の書式設定を強制するのは簡単です。 –

答えて

6

末尾の0にはoptionsがあるかどうかはわかりません。 1つの可能性は、独自のprint.numeric関数とprint.integer関数を持つことです。

print.integer <- print.numeric <- function(..., digs=1) { 
    print(format(as.numeric(...), nsmall=digs), quote=F) 
} 

それはあなたが直接形式でnsmall引数を使用することができ、まだprintが必要ですが、代わりにすっきり

> print(-1:5) 
[1] -1.0 0.0 1.0 2.0 3.0 4.0 5.0 


です。

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 

n算術計算でその書式を保持formattable, numericベクトルです。

> n+5 
[1] 5.0 
関連する問題