2016-09-23 6 views
0

Wie kann ich die Dezimalstellen eines Quotienten in R schneiden? Ich berechne Millionen von Werten und schreibe sie in eine Datei im laufenden Betrieb. Um etwas Platz zu sparen, möchte ich nicht mehr als fünf Dezimalstellen und auch keine abschließenden Nullen.Maximale Anzahl der Dezimalstellen in R

Ich versuchte

options(digits=5) 

, die ich nur lesen ein Vorschlag zu R ist und funktioniert nicht gut beenden. Und

format(x, nsmall = 5) 

bestimmt nur die minimale Anzahl von Dezimalstellen. Und

sprintf("%.5f", x) 

wird mir genau fünf Dezimalstellen geben.

Antwort

2

Wie wäre es mit nur

round(x,5) 
x=1.23456777 
round(x,5) 
#[1] 1.23457 
x=1.230000 
#round(x,5) 
[1] 1.23 

Wenn Sie Rundung dies nicht versuchen:

as.integer(x*10^5)/10^5 

x=1.234567777 
as.integer(x*10^5)/10^5 
#[1] 1.23456 
x=1.230000 
as.integer(x*10^5)/10^5 
#[1] 1.23 
+1

Danke für die Anregung, aber ich mag die Präzision von genau fünf Dezimalstellen haben, wenn notwendig. Die runde Methode wird sich etwas anders verhalten und die Ausgabe für das erste x wäre nicht 1.23457, sondern 1.2346 – Wipster

+1

@Wipster Suchst du nach 'signif'? – Roland

+0

ok, aktualisiert nach Ihrer Anforderung. Ich denke du willst 1.23456 für 1.234567777 oder? –

1

Die runde Funktion funktioniert gut, wenn Sie vorher die Ziffern Option ändert verzichten.

Run mit den Standardoptionen:

> round(x = 1.23456777, digits = 5) 
[1] 1.23457 

Run mit veränderten Optionen:

> options(digits=5) 
> round(x = 1.23456777, digits = 5) 
[1] 1.2346 
+0

P.S .: Der Standardwert der Ziffern ist 7 ('getOption (" Ziffern ")') –