Salah satu hal yang digunakan untuk membingungkan saya sebagai yang baru ke R adalah bagaimana memformat angka sebagai persentase untuk dicetak.
Misalnya, tampilkan 0.12345
sebagai 12.345%
. Saya memiliki sejumlah solusi untuk ini, tetapi tidak satu pun dari ini tampaknya "baru oleh ramah". Sebagai contoh:
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%"
Pertanyaan: Apakah ada fungsi dasar R untuk melakukan ini? Atau, apakah ada paket yang digunakan secara luas yang menyediakan pembungkus yang nyaman?
Meskipun mencari sesuatu seperti ini ?format
, ?formatC
dan ?prettyNum
, saya belum menemukan pembungkus nyaman yang sesuai di basis R. ??"percent"
tidak menghasilkan sesuatu yang berguna. library(sos); findFn("format percent")
mengembalikan 1.250 hit - jadi sekali lagi tidak berguna. ggplot2
memiliki fungsi percent
tetapi ini tidak memberikan kontrol atas akurasi pembulatan.
sprintf
baik-baik saja untuk subset dari coders R yang juga kebetulan programmer. Saya memiliki banyak kode dalam hidup saya, termasuk COBOL (gemetar) dan fortran (menunjukkan usia saya). Tapi saya tidak menganggap sprintf
aturan format jelas (terjemahan: WTF?). Dan tentu saja bungkus khusus harus lebih mudah dihubungi daripada sprintf, misalnya:format_percent(x=0.12345, digits=2)
sprintf()
hampir tidak memakan waktu banyak daripada mengetahui bahwa paket foo berisi format_percent()
. Apa yang terjadi jika pengguna kemudian tidak ingin memformat sebagai persen tetapi sesuatu yang serupa? Mereka perlu menemukan pembungkus lain. Dalam jangka panjang, pembelajaran alat dasar akan bermanfaat.
%
adalah karakter komentar di LaTeX, yang merupakan format pelaporan "default" untuk R. Jadi, sementara itu mungkin berguna untuk memberi label pada grafik, kehati-hatian harus diperhatikan jika nomor yang diformat akan di-Sweave.
sprintf
tampaknya menjadi solusi favorit di milis, dan saya belum melihat solusi yang lebih baik. Fungsi bawaan apa pun tidak akan lebih mudah untuk dipanggil, bukan?