2012-11-27 21 views
7

Wie kann ich mit einem Befehl die Anzahl der angezeigten Ziffern während einer gesamten R-Sitzung angeben? Das heißt, wie kann ich den Wert 0 immer als 0.0 anzeigen lassen? Ich habe den Befehl options(digits=1) versucht, aber 0 wird immer noch als 0 und nicht 0.0 angezeigt. Ich versuche wirklich zu vermeiden, jeden Befehl in etwas wie print(ifelse(x==0,"0.0",x)) zu wickeln.Formatieren Alle Nachkommastellen in R

Es wäre auch schön, wenn die Lösung für dieses Problem, sagen wir, 5 als 5.0 erscheinen.

+0

Dies fällt unter "Sie könnten, aber sollten Sie?" Es gibt keinen anderen Grund als eine persönliche Ästhetik, um dies zu tun, und es kann Sie in die Irre führen, wenn Sie mit Ganzzahlen oder Schwimmern zu tun haben. Denken Sie daran, dass das, was angezeigt wird, nicht mit der Genauigkeit, mit der die Zahlen gespeichert werden, zusammenhängt, und dass es außerdem trivial ist, diese Art von Formatierung zu erzwingen, wenn Sie zu einer Datei "sprinten". –

Antwort

6

Ich bin nicht sicher, ob es eine options für nachfolgende Nullen gibt. Eine Möglichkeit wäre, Ihre eigenen Funktionen print.numeric und print.integer zu haben.

print.integer <- print.numeric <- function(..., digs=1) { 
    print(format(as.numeric(...), nsmall=digs), quote=F) 
} 

Es bedarf noch print, ist aber sauberere

> print(-1:5) 
[1] -1.0 0.0 1.0 2.0 3.0 4.0 5.0 


Alternativ Sie das nsmall Argument Format direkt verwenden können.

mat <- matrix(as.numeric(rep(0:3, 5)), ncol=4) 
print(format(mat, nsmall=2), quote=F) 
0

Sie können versuchen, mein Paket formattable.

> # devtools::install_github("renkun-ken/formattable") 
> library(formattable) 
> n <- formattable(0, format = "f", digits = 1) 
> n 
[1] 0.0 

n ist ein formattable, numeric Vektor, der die Formatierung in arithmetischen Berechnungen bewahrt.

> n+5 
[1] 5.0