16

引数の大きさに関係なく、常に小数点以下の桁数を返す R 関数が必要です。round() を試しましたが、このようには機能しません。これが私の例です:

Rweb:> round(111234.678912,4) # expect 111234.6789
[1] 111234.7 
Rweb:> round(111234.678912/10,4) # expect 11123.4679    
[1] 11123.47 
Rweb:> round(111234.678912/100,4) # expect 1112.3468      
[1] 1112.347 
Rweb:> round(111234.678912/1000,4)     
[1] 111.2347 
Rweb:> round(111234.678912/10000,4)     
[1] 11.1235 

引数が指数形式の場合は機能しますが、浮動小数点形式の数値を扱う必要があります。

4

4 に答える 4

17

数値を正しい桁数に丸めますただし、R には、非常に大きな数を表示する桁数に制限があります。つまり、それらの数字はそこにありますが、表示されていません。

これは次のように見ることができます:

> round(111234.678912,4)
[1] 111234.7
> round(111234.678912,4) - 111234
[1] 0.6789

を使用formatCして、任意の桁数で表示できます。

> n = round(111234.678912,4)
> formatC(n, format="f")
[1] "111234.6789"
> formatC(n, format="f", digits=2)
[1] "111234.68"

@mnel が有益に指摘しているように、以下を使用して、表示される桁数 (小数点の左側を含む) を設定することもできますoptions

> options(digits=6)
> round(111234.678912,4)
[1] 111235
> options(digits=10)
> round(111234.678912,4)
[1] 111234.6789
于 2012-09-19T04:54:33.583 に答える
2

私のように、質問がビッグナムについてであると思った他の人のために:-)、これは熟考するためにあります:-)

 Rgames> bfoo<-mpfr("1.234545678909887665453421")
 Rgames> bfoo
 1 'mpfr' number of precision  84   bits 
  [1] 1.234545678909887665453421
 Rgames> round(bfoo,10)
 1 'mpfr' number of precision  84   bits 
 [1] 1.23454567889999999999999999`
于 2012-09-19T13:21:04.797 に答える