2013-03-31 8 views
5

Ich möchte, dass die Ausgabe meiner R-Konsole lesbar aussieht. Zu diesem Zweck möchte ich, dass R alle meine Zahlen auf die nächsten N Nachkommastellen rundet. Ich habe einen gewissen Erfolg, aber es funktioniert nicht vollständig:Runde Zahlen in der Ausgabe, um kleine Mengen nahe null als Null anzuzeigen

> options(scipen=100, digits=4) 
> .000000001 
[1] 0.000000001 
> .1 
[1] 0.1 
> 1.23123123123 
[1] 1.231 

Ich möchte die 0,000000001 als einfach angezeigt werden 0. Wie man das macht? Lassen Sie mich genauer sein: Ich möchte eine globale Lösung für die gesamte R-Sitzung. Ich weiß, dass ich anfangen kann, Dinge zu ändern, indem ich sie abrundet, aber es ist weniger hilfreich, als Dinge einfach für die gesamte Sitzung festzulegen.

+2

Es scheint mir, dass 'Anzeigen 0.000000001' als '0' nicht lesbar ist, es ist nur irreführend (was für solche Fälle mit wissenschaftlicher Schreibweise falsch?) –

+0

, wenn ich eine Regression ausführen, neigen dazu, meine Variablen zu sein 'scale'd, so dass 0.000000001 tatsächlich wirklich Null ist (unbedeutendes tstat), aber es als 1e-9 angezeigt wird, ist einfach nicht lesbar, wenn Sie eine Reihe von Zahlen haben, die mit 1e-9, einige mit 1e0 angezeigt werden tatsächlich sind signifikant) – Alex

+2

Wie gibst du deine Regression aus? Welche Funktion Sie auch immer verwenden, es ist wahrscheinlich, dass sie einen Druckbefehl enthält. Fügen Sie innerhalb dieses Druckbefehls bei Bedarf eine runde (x, 4) ein. –

Antwort

2

versuchen

sprintf("%.4f", 0.00000001) 
[1] "0.0000" 
+1

aber das ist keine globale Lösung, wie das Poster zu wollen scheint. –

+0

danke, aber wie Tyler sagte, ich hatte gehofft, etwas einmal in der Sitzung zu tun, im Gegensatz zum Runden jedes Mal, wenn ich eine Regression – Alex

4

Blick auf ?options, speziell auf die digits und scipen Optionen.

+1

können Sie genauer sein? Offensichtlich habe ich die schon angeschaut, wie Sie aus der Frage sehen können ... – Alex

0

Kombinieren Sie, was Greg Snow und Ricardo Saporta Ihnen bereits gegeben haben, um die richtige Antwort zu erhalten: options('scipen'=+20) and options('digits'=2), kombiniert mit round(x,4).

round(x,4) runden kleine Mengen nahe null ab.

Entweder Sie einmal die Ergebnisse der Regression abrunden und speichern Sie es:

x <- round(x, 4) 

... oder sonst ja, was Sie tun müssen, dass jedes Mal, wenn Sie die kleine Menge angezeigt werden, wenn Sie nicht tun möchte seinen gerundeten Wert speichern. In Ihrem Fall, da Sie sagten, dass kleine Mengen nahe Null eigentlich Null darstellen, warum runden Sie es nicht einfach ab?

Wenn Sie aus irgendeinem Grund sowohl die präzise als auch die abgerundete Version behalten müssen, dann tun Sie dies.

x.rounded <- round(x, 4)