Keluaran Berformat dengan sprintf()
Kawal tempat perpuluhan, pelapik dan penjajaran dengan rentetan format sprintf.
Keluaran Berformat dengan sprintf() ialah pelajaran R Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran R Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus R Academy merangkumi sejumlah 4 pelajaran.
Asas sprintf()
sprintf() memformat rentetan menggunakan rentetan format dengan ruang letak. Ia berfungsi tepat seperti printf dalam C. Argumen pertama ialah templat format; argumen seterusnya mengisi ruang letak mengikut tertib.
sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)Ruang Letak Integer dan Rentetan
%d memformat integer, %s memformat rentetan dan %f memformat nombor titik terapung. Setiap ruang letak digantikan mengikut tertib oleh argumen yang sepadan.
name <- 'Bob'
age <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)Mengawal Tempat Perpuluhan
%.2f bermaksud: format sebagai float dengan tepat 2 tempat perpuluhan. Nombor antara . dan f mengawal ketepatan. Ini sesuai untuk mata wang, peratusan dan nilai saintifik.
pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)Lebar Medan dan Pengisian
Nombor sebelum huruf format menetapkan lebar minimum medan. Nilai dijajarkan ke kanan secara lalai, dengan ruang di sebelah kiri sebagai pengisi. Ini berguna untuk menjajarkan lajur dalam laporan teks biasa.
items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
cat(sprintf('%-10s $%6.2f\n', items[i], prices[i]))
}Penjajaran Kiri dengan Bendera -
Awali nombor lebar dengan - untuk menjajarkan teks ke kiri dalam medan. Ini ialah cara piawai untuk menghasilkan lajur sejajar kiri dalam output teks lebar tetap.
# Right-aligned (default)
sprintf('%10s', 'hi')
# Left-aligned
sprintf('%-10s', 'hi')
# Practical: side-by-side
cat(sprintf('%-8s %5d\n', 'Alice', 42))
cat(sprintf('%-8s %5d\n', 'Bob', 7))Notasi Saintifik dengan %e dan %g
%e memaksa notasi saintifik (contohnya 1.23e+04). %g memilih secara automatik antara %f atau %e yang lebih pendek — berguna apabila nilai merangkumi banyak tertib magnitud.
x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)Pengisian Sifar dengan Bendera 0
Awali lebar dengan 0 untuk mengisi nombor dengan sifar di hadapan dan bukannya ruang. Ini lazim digunakan untuk ID, tarikh dan skema penomboran fail yang diisi sifar.
ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)Pemformatan Peratusan
Untuk memaparkan nisbah sebagai peratusan, darabkan dengan 100 dan gunakan %.1f%%. %% berganda memasukkan tanda peratus literal dalam output (satu % akan ditafsirkan sebagai permulaan ruang letak).
pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)sprintf() Bervektor
Apabila anda menghantar vektor sebagai argumen kepada sprintf(), fungsi ini mengulangi operasi secara automatik pada vektor tersebut dan mengembalikan satu rentetan berformat bagi setiap unsur. Rentetan format itu sendiri dikitar semula.
products <- c('Apple', 'Banana', 'Cherry')
prices <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)Berbilang Ruang Letak, Berbilang Argumen
Setiap ruang letak menggunakan satu argumen mengikut tertib. Anda boleh mencampurkan %d, %f dan %s secara bebas dalam satu rentetan format, dan semua argumen vektor dikitar semula mengikut panjang yang terbesar.
months <- c('Jan', 'Feb', 'Mar')
revenue <- c(12500, 9800, 15300)
growth <- c(0.05, -0.12, 0.18)
sprintf('%s: $%d (growth: %+.1f%%)',
months, revenue, growth * 100)sprintf() berbanding paste() — Bila Hendak Menggunakan Setiap Satu
Gunakan paste()/paste0() untuk pencantuman mudah; gunakan sprintf() apabila anda memerlukan pemformatan berangka yang tepat (tempat perpuluhan, lebar, pengisian). sprintf() lebih panjang, tetapi memberikan kawalan penuh terhadap rupa nombor.
val <- 1234567.891
# paste: no formatting control
paste('Total:', val)
# sprintf: formatted as currency
sprintf('Total: $%,.2f', val)
# With manual formatting
sprintf('Total: $%15.2f', val)Semakan Pantas
Apakah kod format dalam sprintf() yang memasukkan tanda peratus literal % ke dalam output?
Kesimpulan Utama sprintf()
Kesimpulan utama untuk sprintf():
%dinteger,%ffloat,%srentetan,%esaintifik,%gautomatik%.2f= 2 tempat perpuluhan;%10.2f= lebar 10, 2 tempat perpuluhan%-10s= jajaran kiri dalam medan 10 aksara;%05d= diisi sifar sehingga 5 digit%%= tanda peratus literal dalam outputsprintf()bervektor terhadap argumennya- Utamakan
sprintf()berbandingpaste()apabila ketepatan pemformatan berangka penting
x <- 0.87654
cat(sprintf('Default f : %f\n', x))
cat(sprintf('2 decimals : %.2f\n', x))
cat(sprintf('Percentage : %.1f%%\n', x * 100))
cat(sprintf('Scientific : %e\n', x))
cat(sprintf('Auto : %g\n', x))Pelajari R dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 43
- Pelajaran
- 159
Soalan Lazim
Adakah pelajaran “Keluaran Berformat dengan sprintf()” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran R Academy, termasuk “Keluaran Berformat dengan sprintf()”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus R Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Keluaran Berformat dengan sprintf()”?
Kawal tempat perpuluhan, pelapik dan penjajaran dengan rentetan format sprintf. Anda berlatih R Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan R Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran R Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Keluaran Berformat dengan sprintf()” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membina Rentetan dengan paste() dan paste0()
- Keluaran Berformat dengan sprintf()
- Memaparkan Keluaran dengan cat() dan print()
- Pelapikan dan Penjajaran Rentetan