2012-06-27 13 views
7

Uruchomiłem kod, aby uzyskać wydruki, w których chcę wydrukować wszystkie wyjścia z 1 miejscem dziesiętnym. Jednak kod wykorzystuje funkcje, które ogólnie używam i nie chcę w nich podawać, że wydrukowane dane są zaokrąglone.Ustawienie domyślnej liczby miejsc dziesiętnych do drukowania

Odpowiedzi na to pytanie Formatting Decimal places in R sugerują użycie options(digits=2) lub round(x, digits=2).

Pierwsza opcja jest ogólnym ustawieniem, które jest idealne dla zaokrąglenia 1.234 do 1.2 ale wydrukować 12.345 jak 12

Druga opcja będzie działać, jeśli umieścić wewnątrz funkcji, ale nie chcę ich dotknąć. Jak ustawić to ogólnie?

Odpowiedz

8

Można to zrobić:

print <- function(x, ...) { 
    if (is.numeric(x)) base::print(round(x, digits=2), ...) 
    else base::print(x, ...) 
} 
+0

Dzięki za sugestię. Próbując to ja przybyłem na ten sam problem jak ustawienie opcji (cyfry = 2) - '#load Funkcja drukowania x <- 12,34 z = print (x) [1] 12' - Czy istnieje coś i” m brakuje? – BuckyOH

+1

czy zresetowałeś opcję 'cyfry' na jej domyślną? spróbuj ponownie w nowej sesji. –

+0

Cóż, to jest krępujące, wydaje się teraz działać. Dzięki. – BuckyOH

5

Lubię formatC numerów Drukowanie z określonej liczby miejsc po przecinku. W ten sposób 1 powinno być zawsze drukowane jako "1.0", gdyi format = "f". Możesz utworzyć metodę drukowania S3 dla obiektów klasy numerycznej, takich jak:

print.numeric<-function(x, digits = 1) formatC(x, digits = digits, format = "f") 

print(1) 
# [1] "1.0" 

print(12.4) 
# [1] "12.4" 

print(c(1,4,6.987)) 
# [1] "1.0" "4.0" "7.0" 

print(c(1,4,6.987), digits = 3) 
# [1] "1.000" "4.000" "6.987" 
Powiązane problemy