2012-05-30 27 views
7

I không muốn xem bất kỳ ký pháp khoa học nào trong bất kỳ kết quả nào của phép tính trong phiên R của tôi. Tôi muốn xem tất cả các con số thực tế, tốt nhất là với dấu phẩy (,) sau mỗi ba chữ số.Xóa hoàn toàn ký hiệu khoa học cho toàn bộ phiên R

Tôi có thể làm như thế nào? options(scipen = 999) không cắt.

+1

Ra khỏi tò mò bệnh hoạn, tại sao? Độ chính xác gấp đôi chỉ chính xác đến ~ 16 chữ số, vì vậy mọi thứ sau đó vẫn làm tròn. –

+1

cách sử dụng kế toán – JoeJoe

+2

Bạn có hiểu sự khác biệt giữa những gì được hiển thị trong bảng điều khiển và những gì được ghi vào một tệp hoặc kết nối khác không? –

Trả lời

10

Chức năng print.default nhìn vào giá trị options()['digits'] trong "quyết định" chiều rộng để phân bổ, vì vậy bạn có thể cần tăng nó cũng như cố gắng tối đa hóa 'xóa'. Có các vấn đề về hệ điều hành cụ thể với các giá trị trên 16 cho chiều rộng đó. Đối với yêu cầu dấu phẩy, ... quên nó đi. R không phải là hệ thống báo cáo tài chính. Nếu bạn cần ép buộc định dạng đầu ra này, bạn có thể định nghĩa đối tượng là một lớp cụ thể và viết phương thức in cho chúng bằng sprintf và formatC, Hoặc tôi giả sử bạn có thể viết lại print.default, nhưng điều đó chỉ ảnh hưởng đến các thao tác in không được chuyển đến một trong 100 phương pháp khác cho print.

Có phương thức đầu ra. formatC()prettyNum() cả hai đều có đối số 'big.mark' sẽ chèn dấu phẩy vào số. Đầu ra có định dạng "character", do đó, hãy không cố gắng thực hiện thêm bất kỳ phép tính nào trên kết quả bạn tạo.

Ngoài ra còn có phương pháp đầu vào có thể đọc các cột với các số có chứa dấu phẩy hoặc ký hiệu tiền tệ:

setAs("character", "num.with.commas", function(from) as.numeric(gsub(",", "", from))) 
setAs("character", "euro", 
function(from) as.numeric(gsub("€", "", from))) 
setAs("character", "num_pct", 
function(from) as.numeric(gsub("%", "", from))/100) 
# you will get warning messages if you have not defined the class, 
#  .... but this will still succeed 

Input <- "A B C 
1,000 1% 3.50€ 
2,000 2% 4.77€ 
3,000 3% €5.68 
" 
DF <- read.table(textConnection(Input), header = TRUE, 
       colClasses = c("num.with.commas", "num_pct", "euro")) 
str(DF) 
Các vấn đề liên quan