Một trong những điều từng làm tôi bối rối khi là người mới của R là cách định dạng số theo tỷ lệ phần trăm để in.
Ví dụ, hiển thị 0.12345
dưới dạng 12.345%
. Tôi có một số cách giải quyết cho việc này, nhưng không ai trong số này có vẻ là "người mới thân thiện". Ví dụ:
set.seed(1)
m <- runif(5)
paste(round(100*m, 2), "%", sep="")
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
sprintf("%1.2f%%", 100*m)
[1] "26.55%" "37.21%" "57.29%" "90.82%" "20.17%"
Câu hỏi: Có chức năng cơ sở R để làm việc này không? Ngoài ra, có một gói được sử dụng rộng rãi cung cấp một trình bao bọc thuận tiện?
Mặc dù tìm kiếm một cái gì đó như thế này ?format
, ?formatC
và ?prettyNum
, tôi vẫn chưa tìm thấy một trình bao bọc thuận tiện phù hợp trong cơ sở R. ??"percent"
không mang lại bất cứ điều gì hữu ích. library(sos); findFn("format percent")
trả về 1250 lượt truy cập - vì vậy một lần nữa không hữu ích. ggplot2
có chức năng percent
nhưng điều này không kiểm soát độ chính xác làm tròn.
sprintf
là hoàn toàn tốt cho tập hợp con của các lập trình viên R cũng là lập trình viên. Tôi đã mã hóa rất nhiều trong cuộc sống của mình, bao gồm cả COBOL (shudder) và fortran (cho thấy tuổi của tôi). Nhưng tôi không xem xét các sprintf
quy tắc định dạng rõ ràng (bản dịch: WTF?). Và tất nhiên, một trình bao bọc chuyên dụng phải dễ gọi hơn sprintf, ví dụ:format_percent(x=0.12345, digits=2)
sprintf()
hầu như không tốn nhiều thời gian hơn là tìm ra gói foo chứa format_percent()
. Điều gì xảy ra nếu người dùng sau đó không muốn định dạng theo phần trăm nhưng một cái gì đó tương tự? Họ cần tìm một bọc khác. Về lâu dài việc học các công cụ cơ bản sẽ có lợi.
%
là ký tự nhận xét trong LaTeX, đó là định dạng báo cáo "mặc định" cho R. Vì vậy, trong khi nó có thể hữu ích cho việc ghi nhãn biểu đồ, thì phải cẩn thận nếu số được định dạng bị xóa.
sprintf
dường như là giải pháp yêu thích trong danh sách gửi thư và tôi chưa thấy giải pháp nào tốt hơn. Bất kỳ chức năng tích hợp nào sẽ không đơn giản hơn nhiều để gọi, phải không?