11

私が達成しようとしているのは、印刷されたすべての数字を最大7桁数で表示することです。印刷したいものの例を次に示します。

0.000000 (実際の数値は 0.000000000029481.....)

0.299180 (実際の数値は 0.299180291884922.....)

options(scipen=99999)と を使用して、後者のタイプの数値で成功しましたoptions(digits=6)。ただし、前者の例では常に膨大な数のゼロが出力され、その後にゼロ以外の 5 つの数字が続きます。これが発生しないようにして、目的の結果を達成するにはどうすればよいですか? 私も科学的表記法を望んでいません

これを、すべてのコンテキストですべての印刷された数字に適用したいと考えています。たとえば、行列があり、それAを と呼び、この行列を出力する場合、すべての要素を 6 ~ 7 桁にする必要があります。これは、すべてのコンテキストのすべての印刷で自動的に行われるようにしたいです。options(digits=6)を使用するのと同じようoptions(scipen=99999)に、すべてのコンテキストで自動化します。

4

2 に答える 2

12

印刷したいタイプの新しい印刷メソッドを定義できます。たとえば、すべての数値が double の場合、次のように作成できます。

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

これで、double (または double のベクトル) を出力すると、 のprint.double()代わりに関数が呼び出されますprint.default()

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

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

于 2013-01-05T14:09:50.003 に答える
3

すべての数値が 1 未満ですか? 簡単に試すことができsprintf( "%.6f", x )ます。sprintfそれ以外の場合は、桁数に基づいてラッピングを試みることができます。その他の詳細を確認?sprintfしてください。

于 2012-12-29T11:23:03.597 に答える