Ich habe eine Zahl, zum Beispiel 1.128347132904321674821, die ich bei der Ausgabe auf dem Bildschirm (oder beim Schreiben in eine Datei) nur als zwei Dezimalstellen anzeigen möchte. Wie macht man das?
x <- 1.128347132904321674821
BEARBEITEN:
Die Verwendung von:
options(digits=2)
Wurde als mögliche Antwort vorgeschlagen. Gibt es eine Möglichkeit, dies in einem Skript für die einmalige Verwendung anzugeben? Wenn ich es meinem Skript hinzufüge, scheint es nichts anderes zu tun, und ich bin nicht daran interessiert, viele Zahlen erneut einzugeben, um jede Zahl zu formatieren (ich automatisiere einen sehr großen Bericht).
- -
Antwort: rund (x, Ziffern = 2)
r
formatting
rounding
r-faq
Brandon Bertelsen
quelle
quelle
controls the number of digits to print when printing numeric values. It is a suggestion only. Valid values are 1...22 with default 7. See the note in print.default about values greater than 15.
Von? -Optionen wird nur die Ausgabe beeinflusst.round(23, digits=2)
gedruckt wird23
und nicht23.00
. Wenn Sie Letzteres möchten, versuchen Sie es mit stackoverflow.com/a/12135122/180892Antworten:
Hintergrund: Einige auf dieser Seite vorgeschlagenen Antworten (zB
signif
,options(digits=...)
) nicht garantieren , dass eine bestimmte Anzahl von Dezimalstellen für eine beliebige Anzahl angezeigt werden. Ich gehe davon aus, dass dies ein Konstruktionsmerkmal in R ist, bei dem nach guter wissenschaftlicher Praxis eine bestimmte Anzahl von Ziffern auf der Grundlage der Prinzipien " signifikanter Zahlen " angezeigt wird . In vielen Domänen (z. B. APA-Stil , Geschäftsberichte) schreiben die Formatierungsanforderungen jedoch vor, dass eine bestimmte Anzahl von Dezimalstellen angezeigt wird. Dies geschieht häufig aus Gründen der Konsistenz und Standardisierung, anstatt sich mit signifikanten Zahlen zu befassen.Lösung :
Der folgende Code zeigt genau zwei Dezimalstellen für die Zahl
x
.Beispielsweise:
Eine allgemeinere Funktion lautet wie folgt: Wo
x
ist die Anzahl undk
die Anzahl der anzuzeigenden Dezimalstellen?trimws
Entfernt alle führenden Leerzeichen, die nützlich sein können, wenn Sie einen Zahlenvektor haben.Z.B,
quelle
0.0001
als0.00
format()
undprettyNum()
Zahlen in Zeichen umwandeln. Wie würden Sie das angehen?format(c(10, 1), nsmall=1)
Ausbeuten"10.0" " 1.0"
(beachten Sie das führende Leerzeichen vor der 1.0. Während diesprintf()
Funktion eine schönere Formatierung zu garantieren scheint beide Seiten der dezimal, zBsprintf(c(10,1), fmt = '%#.1f')
wird dieser lästigen führenden Raum und kehrt zu befreien"10.0" "1.0"
.format
in einer Spalte verwendet wird.Sie können eine Zahl beispielsweise
x
bis zu Dezimalstellen formatieren, wie Sie möchten. Hierx
ist eine Zahl mit vielen Dezimalstellen. Angenommen, wir möchten bis zu 8 Dezimalstellen dieser Zahl anzeigen:Hier werden
format="f"
Gleitkommazahlen mit den üblichen Dezimalstellendigits
angegeben , z. B. xxx.xxx, und die Anzahl der Ziffern angegeben. Im Gegensatz dazu würden Sieformat="d"
(ähnlich wiesprintf
) verwenden , wenn Sie eine Ganzzahl anzeigen möchten .quelle
formatC
ich fast ausschließlich diesen Zweck verwende. Ich denke, diese Antwort ist gut und befindet sich in Basis R gemäß der Anfrage des OP.Sie können versuchen, mein Paket formatierbar .
Das Gute ist, dass
x
es sich immer noch um einen numerischen Vektor handelt und Sie mit derselben Formatierung mehr Berechnungen durchführen können.Noch besser, die Ziffern gehen nicht verloren, Sie können jederzeit mit mehr Ziffern neu formatieren :)
quelle
für 2 Dezimalstellen unter der Annahme, dass Sie nach Nullen bleiben möchten
was gibt
Wie @mpag unten erwähnt, scheint es, dass R damit manchmal unerwartete Werte liefern kann, und die runde Methode, z. B. sprintf (5.5550, fmt = '% #. 2f'), ergibt 5.55, nicht 5.56
quelle
Sowas in der Art :
Option zur Definition der Ziffern:
quelle
digits
Option scheint die Anzahl der Nachkommastellen nicht festzulegen. Wenn ich beispielsweise Optionen einstelle (Ziffern = 2), führt das Drucken von 7,25 zu einer Ausgabe von 7,2, 1234,25 zu 1234 und 0,25 bleibt zu 0,25. Gibt es eine andere Option, die damit interagiert?Überprüfen Sie die Funktionen PrettyNum, Format
Probieren von Nullen (z. B. 123.1240) verwenden
sprintf(x, fmt='%#.4g')
quelle
sprintf
, es ist im Grunde ein Rahmen für die Formatierungfmt
, sorry!g
in Ihrer Antwort für feste Ziffern ist, mitf
funktioniert besser.Wenn Sie signifikante Ziffern festen Ziffern vorziehen, kann der Befehl signieren hilfreich sein:
quelle
Error: could not find function "fixed"
signif
funktioniert für die angegebene Nummer, aber ich gehe davon aus, dass das häufig angewendete Problem darin besteht, dass Sie genau zwei Dezimalstellen anzeigen müssen, aber nicht wissen, wie hoch die Nummer im Voraus ist. In diesem Fallsignif
wird abhängig von der tatsächlichen Anzahl eine unterschiedliche Anzahl von Dezimalstellen angegeben.Mit dieser Funktion
formatC()
kann eine Zahl auf zwei Dezimalstellen formatiert werden. Diese Funktion gibt zwei Dezimalstellen an, selbst wenn die resultierenden Werte nachgestellte Nullen enthalten.quelle
Ich verwende diese Variante für den Kraftdruck K Dezimalstellen:
quelle
Beachten Sie, dass numerische Objekte in R mit doppelter Genauigkeit gespeichert werden , wodurch Sie (ungefähr) 16 Dezimalstellen erhalten - der Rest ist Rauschen. Ich gebe zu, dass die oben gezeigte Nummer wahrscheinlich nur ein Beispiel ist, aber 22 Ziffern lang.
quelle
Sieht für mich so aus
Per ein wenig Online-Hilfe .
quelle
format.default(x, digits = 2)
einem Schuss im Dunkeln, basierend auf dem angegebenen Link. Diese Informationen fehlen, was ich normalerweise für die Dokumentation gelesen habe. Ich habe erwartet, dass auch die gedruckten Ausgaben angezeigt werden.Wenn Sie nur eine Zahl oder eine Liste runden möchten, verwenden Sie einfach
Dann werden die Daten auf 2 Dezimalstellen gerundet.
quelle