2017-11-21 7 views
0

formatCを使用して、数字の束がすべて同じ長さに印刷されるようにします。いくつかの数字は、希望の長さよりも短く、0で埋められます。また、いくつかの数字は長く、切り捨てられます。問題は最後の桁にformatCラウンドです。フォーマットCでの丸めの回避

これは、私はむしろ丸めずに、n番目の桁でそれを切り捨てるだろう、私は丸めを好きではない

> formatC(1, digits = 5, format = 'f') 
[1] "1.00000" 

結構です。

> formatC(1.234567, digits = 5, format = 'f') 
[1] "1.23457" 

Rを丸めずに数字を切り捨てる方法はありますか?最初に文字に変換してから、その部分文字列を取得することは可能かもしれないが、それは気難しいと感じている。

答えて

2

それは少しハックですが、あなたは少しの乗算でtruncを使用することができます。

trunc(1.234567 * 1e5)/1e5 
# [1] 1.23456 

官能こと:

その後
trunc2 = function(x, d) trunc(x * 10^d)/10^d 

あなたは

formatC(trunc2(1.234567, 5), digits = 5, format = 'f') 
# [1] "1.23456" 
+0

私はそれので、これを好きなことができますパイプでも動作します。 'formatC'の前に' trunc2'を挿入するだけです。 –