27

質問: どうすれば にならpasteずに使えますか?1000001e+05

この質問がつまらないと思われる場合は、事前に申し訳ありません(ただし、コードにバグが発生しました)。私は R を使用して外部スクリプトを呼び出しpaste("abc",100000)ます。"abc 100000""abc 1e+05"

これは、私の画面でどのように見えるかの例です。

> paste("abc",100000)
[1] "abc 1e+05"
> paste("abc",100001)
[1] "abc 100001"

これにより、スクリプトが入力「100001」では機能するが「100000」では機能しないという奇妙な動作が発生します。

数値を文字列に変換するスクリプトを好きなように作成できることはわかっていますが、同じことを行う内部的な方法がある場合は、これを行うべきではないと感じています (欠けている「方法」があると思われます)。 .

[お役に立てれば、私は Ubuntu 12.04.1 LTS (「正確な」) を使用しており、ターミナルで R バージョン 2.14.1 (2011-12-22) を実行しています。]

4

3 に答える 3

30

?options特にを参照してscipenください。

R> paste("abc", 100000)
[1] "abc 1e+05"
R> options("scipen"=10)    # set high penalty for scientific display
R> paste("abc", 100000)
[1] "abc 100000"
R> 

または、以下を介して昔ながらの方法でフォーマットを厳密に制御しsprintf()ます。

R> sprintf("%s %6d", "abc", 100000)
[1] "abc 100000"
R> 
于 2012-11-27T03:26:25.140 に答える
14

または、科学的記数法で印刷されない整数を使用することもできます。数値の後ろに「L」を付けるか、as.integerを実行することで、数値を整数に指定できます。

> paste("abc",100000L)
[1] "abc 100000"
> paste("abc",as.integer(1000000000))
[1] "abc 1000000000"
于 2012-11-27T08:45:11.633 に答える