2012-12-29 1 views
9

私が達成しようとしているのは、印刷された数字を最大で7の数字で表示することです。ここで私は何をしたいの例がある印刷:印刷中の多数のゼロを停止する(科学的表記ではない)

0.000000(0.299180291884922です実際の数.....対)

0.299180(0.000000000029481です実際の数.....対)

私はoptions(scipen=99999)options(digits=6)を使用して後者のタイプの数字で成功しました。ただし、前者の例では、常にゼロの5桁の0以外の桁のゼロが印刷されます。 これを止めて、希望の結果を得るにはどうすればいいですか?私はまた、科学記法を望まない。

これは、あらゆる状況ですべての印刷された数字に適用したいと考えています。たとえば、行列がある場合はAとし、この行列を出力します。すべての要素を6-7桁にする必要があります。私はこれをあらゆる文脈のすべての版画に対して自動的にしたいと思う。 options(digits=6)と同じように、options(scipen=99999)はすべてのコンテキストで自動化されます。

+0

123456789.87654321のように大きな数値がある場合はどうなりますか?科学記法を使用しない場合は、どのようにして最大7桁で印刷できますか? – flodel

+0

@flodel良い点。たぶん私はこれらの非常に大きな数字に科学的表記法(または6桁を超える拡張)を使用したいと思うかもしれません。しかし、すべてのダンバーを切り捨てるソリューションが存在する場合は、6〜7桁の数字を使用します。それは大丈夫です。なぜなら私はRコンソールで印刷する必要がある数が多いからです。 – Jase

答えて

3

すべての数字は<ですか?あなたは簡単なsprintf("%.6f", x)を試すことができます。それ以外の場合は、数字を数字に基づいてsprintfにラップすることができます。その他の詳細については、?sprintfを確認してください。

+0

これはすべてのシングルナンバープリントに自動的に適用されます。これは、すべてのコンテキストのすべてのオブジェクトに適用されるという点で、 'options(digits = 6) 'に似ている解決策であり、* once *を設定するだけです。すべてが<1ではありませんが、インタラクティブに印刷する必要があるものはすべて100未満です。 – Jase

10

印刷するタイプに新しい印刷方法を定義することができます。すべての数字はダブルスがある場合は、二重(またはdoubleのベクトル)を印刷する場合たとえば、あなたは、今

print.double=function(x){sprintf("%.6f", x)} 

を作成することができ、機能print.double()ではなくprint.default()で呼び出されます。

印刷する必要のあるタイプに応じて、print.integer()print.complex()などの同様の機能を作成する必要があります。

デフォルトの印刷方法に戻すには、機能print.double()を削除するだけです。

関連する問題