R Academy · Pelajaran

Pelapikan dan Penjajaran Rentetan

Gunakan formatC() dan format() untuk keluaran teks lebar tetap dan sejajar.

Pelajaran 4 daripada 413 langkah

Pelapikan dan Penjajaran Rentetan ialah pelajaran R Academy percuma di CoddyKit. Ini ialah pelajaran 4 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.

Mengapa Pengisian Rentetan Penting

Keluaran lebar tetap penting untuk jadual teks biasa, fail log dan laporan. R menyediakan formatC() dan format() untuk mengisi nilai sehingga mencapai lebar tetap, bagi memastikan lajur dijajarkan dengan betul dalam paparan monospace.

# Unformatted: columns misalign
cat('Alice 85\n')
cat('Bob 9200\n')
# Padded: columns align
cat(formatC('Alice', width = 10), formatC(85,   width = 6), '\n')
cat(formatC('Bob',   width = 10), formatC(9200, width = 6), '\n')

formatC() — Pengisian Jajaran Kanan

formatC(x, width = n) mengisi nilai sehingga sekurang-kurangnya selebar n aksara, dengan jajaran kanan secara lalai. Ruang ditambah di sebelah kiri. Ini berfungsi untuk nombor dan rentetan.

formatC('hi',   width = 10)
formatC(42,     width = 10)
formatC(3.14,   width = 10)

formatC() — Jajaran Kiri dengan flag

Argumen flag = '-' menukar kepada jajaran kiri dan mengisi sebelah kanan dengan ruang. Ini sesuai untuk label rentetan dalam lajur jadual apabila anda mahu nilai bermula dari tepi kiri.

items <- c('Pen', 'Notebook', 'Stapler')
prices <- c(1.5, 4.99, 7.25)
for (i in seq_along(items)) {
  cat(formatC(items[i], width = 12, flag = '-'),
      formatC(prices[i], format = 'f', digits = 2, width = 8),
      '\n')
}

formatC() dengan Format Berangka

formatC() menyokong kod format: 'f' untuk perpuluhan tetap, 'e' untuk tatatanda saintifik, 'g' untuk memilih yang lebih pendek antara kedua-duanya, dan 'd' untuk integer. Argumen digits mengawal ketepatan.

x <- 12345.6789
formatC(x, format = 'f', digits = 2)
formatC(x, format = 'e', digits = 3)
formatC(x, format = 'g', digits = 5)
formatC(42L, format = 'd', width = 8)

format() — Jajaran R Asas

format(x, width = n, justify = 'left'/'right'/'centre') ialah fungsi generik untuk penjajaran. Ia berfungsi pada sebarang objek R dan mengembalikan vektor aksara yang mengandungi rentetan dengan lebar sama. Justifikasi lalai untuk nombor ialah kanan, manakala untuk rentetan ialah kiri.

words <- c('cat', 'elephant', 'ox')
format(words, width = 10)
format(words, width = 10, justify = 'right')

format() untuk Ketepatan Berangka

format() turut mengawal tempat perpuluhan dengan nsmall (bilangan minimum digit selepas perpuluhan) dan big.mark untuk pemisah ribuan. Ini sesuai untuk memaparkan angka kewangan.

format(1234567.8,  big.mark = ',', nsmall = 2)
format(0.1,        nsmall = 4)
format(c(1.5, 100, 0.005), nsmall = 3)

strrep() — Mengulang Rentetan

strrep(x, times) mengulang rentetan sebanyak bilangan yang ditentukan. Gunakannya untuk membina garis pemisah, rentetan pengisi atau hiasan visual tanpa menggabungkan aksara secara manual.

strrep('-', 40)
strrep('=-', 20)
strrep(c('ab', 'cd'), c(3, 2))
# Draw a simple table border
cat(strrep('=', 30), '\n')

Membina Jadual Teks Lebar Tetap

Gabungkan formatC() dengan cat() dan strrep() untuk membina jadual teks biasa yang kemas. Corak ini lazim dalam alat CLI dan fail log.

header <- paste0(formatC('Name',  width=12,flag='-'),
                 formatC('Score', width=8,flag='-'),
                 formatC('Grade', width=8,flag='-'))
cat(header, '\n')
cat(strrep('-', 28), '\n')
row1 <- paste0(formatC('Alice',  width=12,flag='-'),
               formatC(92,width=8),formatC('A',width=8,flag='-'))
cat(row1, '\n')

formatC() berbanding sprintf() untuk Pengisian

Kedua-dua formatC() dan sprintf() boleh menghasilkan keluaran yang diisi. sprintf() lebih ringkas untuk kes mudah; formatC() lebih fleksibel untuk menggunakan pemformatan yang sama pada seluruh vektor.

x <- 42
# sprintf approach
sprintf('%10d', x)
sprintf('%-10s', 'hello')
# formatC approach
formatC(x,       width = 10)
formatC('hello', width = 10, flag = '-')

Kawalan Tatatanda Saintifik

formatC(x, format='e', digits=n) atau options(scipen=999) mengawal masa R beralih kepada tatatanda saintifik. Pilihan scipen ialah penalti; nilai yang lebih besar menyekat tatatanda saintifik lebih lama sebelum peralihan berlaku.

# Default scipen
print(0.0001234)
print(1234567890)
# Force scientific
formatC(0.0001234, format = 'e', digits = 3)
# Suppress scientific globally
old <- options(scipen = 999)
print(0.0001234)
options(old)

Praktikal: Mengisi ID dan Label

Keperluan yang lazim ialah ID yang diisi dengan sifar atau label yang diisi di sebelah kiri dalam laporan. formatC() mengendalikan kedua-duanya: gunakan flag = '0' untuk mengisi nombor dengan sifar dan flag = '-' untuk menjajarkan rentetan ke kiri.

ids    <- c(1, 12, 123)
names  <- c('Alice', 'Bob', 'Carol')
scores <- c(88.5, 91.0, 76.25)
for (i in seq_along(ids)) {
  cat(formatC(ids[i], width=5, format='d', flag='0'),
      formatC(names[i], width=10, flag='-'),
      formatC(scores[i], width=8, format='f', digits=2),
      '\n')
}

Semakan Pantas

Argumen manakah untuk formatC() yang menjadikan keluaran berjajar ke kiri dalam lebar yang ditentukan?

Pengisian dan Penjajaran: Kesimpulan Utama

Kesimpulan utama untuk pengisian dan penjajaran rentetan:

  • formatC(x, width=n) mengisi ke kanan sehingga lebar n; flag='-' menjajarkan ke kiri
  • formatC(x, format='f', digits=2) untuk perpuluhan tetap; 'e' untuk tatatanda saintifik
  • format(x, justify='left'/'right'/'centre') untuk penjajaran generik
  • format(x, big.mark=',', nsmall=2) untuk pemisah ribuan dan perpuluhan hujung
  • strrep(s, n) mengulang rentetan n kali — sesuai untuk garis pemisah
  • Gabungkan dengan cat() untuk keluaran jadual teks biasa
cat(strrep('=', 30), '\n')
cat(formatC('Item', width=12, flag='-'),
    formatC('Price', width=10), '\n')
cat(strrep('-', 30), '\n')
cat(formatC('Apple', width=12, flag='-'),
    formatC(1.99, width=10, format='f', digits=2), '\n')
Percuma untuk bermula

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 “Pelapikan dan Penjajaran Rentetan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran R Academy, termasuk “Pelapikan dan Penjajaran Rentetan”, 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 “Pelapikan dan Penjajaran Rentetan”?

Gunakan formatC() dan format() untuk keluaran teks lebar tetap dan sejajar. 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 4 daripada 4.

Berapa lamakah pelajaran “Pelapikan dan Penjajaran Rentetan” 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

  1. Membina Rentetan dengan paste() dan paste0()
  2. Keluaran Berformat dengan sprintf()
  3. Memaparkan Keluaran dengan cat() dan print()
  4. Pelapikan dan Penjajaran Rentetan
← Kembali ke R Academy