2012-05-30 7 views
7

I nicht wollen wissenschaftliche Notation in irgendeinem Ergebnis einer Berechnung in meiner R-Sitzung sehen. Ich möchte alle tatsächlichen Zahlen sehen, vorzugsweise mit einem Komma (,) nach jeweils drei Ziffern.Vollständig entfernen wissenschaftliche Notation für die gesamte R-Sitzung

Wie kann ich das tun? options(scipen = 999) schneidet es nicht.

+1

Aus morbider Neugier, warum? Die doppelte Genauigkeit ist nur auf ~ 16 Stellen genau, also wird alles danach abgerundet. –

+1

Buchhaltungsverwendung – JoeJoe

+2

Verstehen Sie den Unterschied zwischen dem, was in der Konsole angezeigt wird und was in eine Datei oder eine andere Verbindung geschrieben wird? –

Antwort

10

Die print.default Funktion betrachtet den options()['digits'] Wert in "entscheiden", welche Breite zuzuweisen, so dass Sie es möglicherweise erhöhen müssen sowie versuchen, "scipen" zu maximieren. Es gibt betriebssystemspezifische Probleme mit Werten über 16 für diese Breite. Was die Kommas anbelangt, ... vergiss es. R ist kein Finanzberichtssystem. Wenn Sie dieses Ausgabeformat erzwingen müssen, können Sie Objekte für eine bestimmte Klasse definieren und Druckmethoden für sie mit sprintf und formatC schreiben. Oder Sie können print.default neu schreiben, aber dies betrifft möglicherweise nur Druckvorgänge, die nicht ausgeführt wurden an eine der anderen 100+ Methoden für print übergeben.

Es gibt Ausgabemethoden. formatC() und prettyNum() haben beide ein 'big.mark'-Argument, das Kommas in Zahlen einfügt. Die Ausgabe erfolgt im Format "character", also versuchen Sie, weitere Berechnungen für die von Ihnen erstellten Ergebnisse durchzuführen, und versuchen Sie, nicht.

Es gibt auch Eingabemethoden, die Spalten mit Zahlen enthalten, Kommas oder Währungssymbole lesen:

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) 
Verwandte Themen