web-dev-qa-db-ja.com

Rの小数点以下の桁数をフォーマットする

たとえば、1.128347132904321674821という数字があります。これは、画面への出力時(またはファイルへの書き込み時)に小数点以下2桁で表示したい場合です。どうやってそれをするのですか?

x <- 1.128347132904321674821

編集:

の用法:

options(digits=2)

可能な答えとして提案されています。 1回限りの使用のためにスクリプト内でこれを指定する方法はありますか?スクリプトに追加しても何も変わらないようで、各数値をフォーマットするために再入力することにはあまり興味がありません(非常に大きなレポートを自動化しています)。

-

答え:丸(x、桁= 2)

224

背景:このページで提案されている回答(signifoptions(digits=...)など)の中には、任意の数に対して特定の数の小数点が表示されることを保証するものではありません。私はこれがRの設計上の特徴であると思います。それによって良い科学的慣習は " 有効数字 "の原則に基づいて一定の桁数を示すことです。しかしながら、多くの分野(例えば、 APAスタイル 、ビジネスレポート)において、フォーマット要件は、特定の数の小数点以下の桁数が表示されることを要求する。これは、重要な数値に関係するのではなく、一貫性と標準化を目的として行われることがよくあります。

解決策

次のコードは、数値xの小数点以下第2位までを正確に示しています。

format(round(x, 2), nsmall = 2)

例えば:

format(round(1.20, 2), nsmall = 2)
# [1] "1.20"
format(round(1, 2), nsmall = 2)
# [1] "1.00"
format(round(1.1234, 2), nsmall = 2)
# [1] "1.12"

より一般的な関数は次のとおりです。ここでxは数値、kは表示する小数点以下の桁数です。 trimwsは、数字のベクトルがある場合に役立つことがある先頭の空白を削除します。

specify_decimal <- function(x, k) trimws(format(round(x, k), nsmall=k))

例えば。、

specify_decimal(1234, 5)
# [1] "1234.00000"
specify_decimal(0.1234, 5)
# [1] "0.12340"
328
Jeromy Anglim

あなたは望むように小数点以下の桁数まで、例えばxとフォーマットすることができます。ここでxは小数点以下の桁数が多い数です。この数字の小数点以下8桁まで表示したいとします。

x = 1111111234.6547389758965789345
y = formatC(x, digits = 8, format = "f")
# [1] "1111111234.65473890"

ここでformat="f"は、通常の小数点以下の桁数を表すxxx.xxxの浮動小数点数を表し、digitsは桁数を指定します。対照的に、整数を表示したい場合はformat="d"を使用します(sprintfとよく似ています)。

25

あなたは私のパッケージ formattable を試すことができます。

> # devtools::install_github("renkun-ken/formattable")
> library(formattable)
> x <- formattable(1.128347132904321674821, digits = 2, format = "f")
> x
[1] 1.13

いいことに、xはまだ数値ベクトルなので、同じフォーマットでもっと多くの計算ができます。

> x + 1
[1] 2.13

さらに良いことに、数字は失われません、あなたはいつでもより多くの数字で再フォーマットすることができます:)

> formattable(x, digits = 6, format = "f")
[1] 1.128347
19
Kun Ren

末尾のゼロを保持したいと仮定して、小数点以下2桁の場合

sprintf(5.5, fmt = '%#.2f')

これは

[1] "5.50"

@mpagが後述するように、Rはこれとroundメソッドで予期しない値を返すことがあるようです。 sprintf(5.5550、fmt = '%#。2f')は5.56ではなく5.55を返します。

14
Mark Adamson

関数のチェックprettyNum、フォーマット

試行ゼロ(たとえば123.1240)を持つにはsprintf(x, fmt='%#.4g')を使います。

6
ilya

そんな感じ :

options(digits=2)

数字オプションの定義:

digits: controls the number of digits to print when printing numeric values.
5
Xavier V.

その場合、有効数字を固定数字よりも優先したい場合は、 signif コマンドが便利です。

> signif(1.12345, digits = 3)
[1] 1.12
> signif(12.12345, digits = 3)
[1] 12.1
> signif(12345.12345, digits = 3)
[1] 12300
4
PaulHurleyuk

関数formatC()は、小数点以下第2位まで数値をフォーマットするために使用することができます。結果の値に末尾のゼロが含まれる場合でも、小数点以下2桁がこの関数によって指定されます。

3
Chernoff

Rの数値オブジェクトは 倍精度 で格納されます。これは(おおよそ)16桁の10進数の精度を与えます - 残りはノイズになります。私は上に示した数字がおそらく例にすぎないことを認めますが、それは22桁の長さです。

2
nullglob

私は強制的にKの小数点以下桁数を印刷するためにこの変種を使っています:

# format numeric value to K decimal places
formatDecimal <- function(x, k) format(round(x, k), trim=T, nsmall=k)
2
Eldar Agalarov

私には似ているように見える

library(tutoR)
format(1.128347132904321674821, 2)

少し オンラインヘルプ あたり。

1
Tim Meers

数字やリストを丸めたい場合は、単に

round(data, 2)

その後、データは小数点以下第2位に四捨五入されます。

1
jared