web-dev-qa-db-ja.com

Rに指数表記を使わないように強制する(例e + 10)

e+10のような表記法の代わりにRに通常の数字を使わせることはできますか?私は持っています:

1.810032e+09
# and 
4

同じベクトル内にあり、見たい:

1810032000
# and
4

私は昔ながらのプログラムのための出力を作成しています、そして私はcatを使用してテキストファイルを書かなければなりません。これはこれまでのところうまく機能しますが、ここではe+10表記を使用することはできません。

196
Matt Bannert

これは少しグレーの領域です。あなたはRが常にprintメソッドを呼び出すことを思い出す必要があります、そしてこれらのprintメソッドはいくつかのオプションをリッスンします。科学的表示に対するペナルティ - 「scipen」を含む。 help(options)から:

「scipen」:整数。数値を固定表記または指数表記で印刷することにした場合に適用されるペナルティ。正の値は固定表記に偏り、負の表記は科学表記になります。固定表記は、「scipen」桁以上の幅がない限り優先されます。

例:

R> ran2 <- c(1.810032e+09, 4) 
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000          4

それは言った、私はまだそれがおかしいと思います。最も困難な方法は、明示的な幅を持つsprintf()を使用することです。

193

それはRの科学的記法を無効にすることによって達成することができます。

options(scipen = 999)
128
GingerJack

私のお気に入りの答え:

format(1810032000, scientific = FALSE)
# [1] "1810032000"

これはRの設定を気にせずに欲しいものを与えます。

数値オブジェクトではなく文字列を返すことに注意してください。

52
Danny

。Rprofileファイルoptions(scipen = 999)を入れると、デフォルトで自動実行されます。 (手動で行うことに頼らないでください。)

(これは他の答えとは違うことを言っています:どうですか?

  1. これにより、毎日または毎月、複数のプロジェクト、複数の言語の間を行き来するときに、物事を正気に保ちます。プロジェクトごとの設定を入力するのを忘れないでください。エラーが発生しやすく、スケーラブルではありません。グローバルな〜/ .Rprofileまたはプロジェクトごとの.Rprofileを持つことができます。あるいはその両方、後者が前者をオーバーライドする。
  2. すべての設定をプロジェクト全体またはグローバルの.Rprofileに保存すると、自動的に実行されます。これは便利です。デフォルトのパッケージのロード、data.tableの設定、環境など。ここでも、その設定は1ページの設定で実行でき、それらとその構文を覚えて入力することはほとんどありません。
3
smci