2012-06-27 29 views
7

Tôi đang chạy mã để tạo kết quả đầu ra nơi tôi muốn tất cả các đầu ra sẽ được in với 1 chữ số thập phân. Tuy nhiên, mã sử dụng các hàm tôi thường sử dụng và tôi không muốn chỉ định trong đó các đầu ra được in được làm tròn.Đặt số thập phân mặc định để in

Câu trả lời cho câu hỏi này Formatting Decimal places in R đề xuất sử dụng options(digits=2) hoặc round(x, digits=2).

Tùy chọn đầu tiên là một khung cảnh chung đó là rất tốt để làm tròn 1.234 để 1.2 nhưng sẽ in 12.345 như 12

Lựa chọn thứ hai sẽ làm việc nếu đặt trong phạm vi chức năng nhưng tôi không muốn chạm vào chúng. Làm thế nào để thiết lập này nói chung?

Trả lời

8

Bạn có thể làm điều này:

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

Cảm ơn đề xuất của bạn. Trong nỗ lực này, tôi đến cùng một vấn đề như thiết lập tùy chọn (chữ số = 2) - 'chức năng in #load x <- 12,34 z = print (x) [1] 12' - Có một cái gì đó i' m mất tích? – BuckyOH

+1

bạn đã đặt lại tùy chọn 'chữ số' thành mặc định? thử lại lần nữa trong một phiên mới. –

+0

Điều đó thật đáng xấu hổ, có vẻ như đang hoạt động. Cảm ơn. – BuckyOH

5

Tôi thích formatC cho số in ấn với một số quy định của chữ số thập phân. Bằng cách đó, 1 phải luôn được in dưới dạng "1.0" khi digits = 1format = "f". Bạn có thể tạo phương thức in S3 cho các đối tượng của số lớp như sau:

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" 
Các vấn đề liên quan