2012-05-30 26 views
7

I 私のRセッションの計算結果に科学的表記が必要です。私はすべての実際の数字を、3桁ごとにカンマ(、)で表示することをお勧めします。Rセッション全体の科学記法を完全に削除します

どうすればいいですか? options(scipen = 999)は切断しません。

+1

、なぜか?倍精度は〜16桁までしか正確ではないので、それ以降はすべてが丸められます。 –

+1

アカウンティングの使用 – JoeJoe

+2

コンソールに表示される内容とファイルやその他の接続に書き込まれる内容との違いを理解していますか? –

答えて

10

print.default関数はoptions()['digits']の値を見て、割り振る幅を「決定」するので、「scipen」を最大にすると同時にそれを増やす必要があります。この幅の値が16を超えるOS固有の問題があります。コンマ要求については、忘れてください。 Rは財務報告システムではありません。この出力形式を強制する必要がある場合は、sprintfとformatCを使用してオブジェクトを特定のクラスとして定義し、それらの印刷メソッドを書き込むことができます。あるいは、print.defaultを書き直すことができますが、 printの100以上の他のメソッドの1つに渡されます。

出力方法があります。 formatC()prettyNum()には両方とも、数字にカンマを挿入する 'big.mark'引数があります。出力は"character"形式になっていますので、ではなく、で作成した結果をさらに計算してください。

カンマを含む数字や通貨記号の列を読むことができる入力方法もあります。病的な好奇心のうち

setAs("character", "num.with.commas", function(from) as.numeric(gsub(",", "", from))) 
setAs("character", "euro", 
function(from) as.numeric(gsub("€", "", from))) 
setAs("character", "num_pct", 
function(from) as.numeric(gsub("%", "", from))/100) 
# you will get warning messages if you have not defined the class, 
#  .... but this will still succeed 

Input <- "A B C 
1,000 1% 3.50€ 
2,000 2% 4.77€ 
3,000 3% €5.68 
" 
DF <- read.table(textConnection(Input), header = TRUE, 
       colClasses = c("num.with.commas", "num_pct", "euro")) 
str(DF) 
関連する問題