0Pricing
R Academy · บทเรียน

การเติมช่องว่างและจัดแนวสตริง

ใช้ formatC() และ format() สำหรับผลลัพธ์ข้อความที่มีความกว้างคงที่และจัดแนวแล้ว

การเติมช่องว่างและจัดแนวสตริง เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดการเติมช่องว่างให้สตริงจึงสำคัญ

เอาต์พุตที่มีความกว้างคงที่จำเป็นสำหรับตารางข้อความล้วน ไฟล์บันทึก และรายงาน R มี formatC() และ format() สำหรับเติมค่าให้มีความกว้างคงที่ เพื่อให้คอลัมน์จัดแนวตรงกันอย่างถูกต้องเมื่อแสดงด้วยแบบอักษรความกว้างคงที่

# 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() — การเติมช่องว่างให้ชิดขวา

formatC(x, width = n) เติมค่าให้มีความกว้างอย่างน้อย n อักขระ และจัดชิดขวาโดยค่าเริ่มต้น ระบบจะเติมช่องว่างทางด้านซ้าย ใช้ได้ทั้งกับตัวเลขและสตริง

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

การจัดชิดซ้ายด้วย flag ของ formatC()

อาร์กิวเมนต์ flag = '-' จะเปลี่ยนเป็นการจัดชิดซ้าย โดยเติมช่องว่างทางด้านขวา เหมาะอย่างยิ่งสำหรับป้ายกำกับสตริงในคอลัมน์ตารางที่ต้องการให้ค่าเริ่มจากขอบซ้าย

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() กับรูปแบบตัวเลข

formatC() รองรับรหัสรูปแบบดังนี้ 'f' สำหรับทศนิยมแบบคงที่ 'e' สำหรับเลขแบบวิทยาศาสตร์ 'g' สำหรับเลือกแบบที่สั้นกว่าระหว่างสองแบบ และ 'd' สำหรับจำนวนเต็ม อาร์กิวเมนต์ digits ใช้ควบคุมความละเอียด

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() — การจัดแนวใน R พื้นฐาน

format(x, width = n, justify = 'left'/'right'/'centre') เป็นฟังก์ชันทั่วไปสำหรับจัดแนว ใช้ได้กับออบเจ็กต์ R ทุกชนิด และคืนค่าเป็นเวกเตอร์อักขระที่มีความกว้างเท่ากัน ค่าเริ่มต้นของการจัดแนวสำหรับตัวเลขคือชิดขวา ส่วนสตริงคือชิดซ้าย

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

format() สำหรับความละเอียดของตัวเลข

format() ยังควบคุมจำนวนตำแหน่งทศนิยมได้ด้วย nsmall (จำนวนหลักขั้นต่ำหลังจุดทศนิยม) และ big.mark สำหรับตัวคั่นหลักพัน เหมาะอย่างยิ่งสำหรับการแสดงตัวเลขทางการเงิน

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

strrep() — การทำซ้ำสตริง

strrep(x, times) ทำซ้ำสตริงตามจำนวนครั้งที่กำหนด ใช้สร้างเส้นตัวคั่น สตริงสำหรับเติมช่องว่าง หรือองค์ประกอบตกแต่งทางภาพโดยไม่ต้องเชื่อมอักขระด้วยตนเอง

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

การสร้างตารางข้อความที่มีความกว้างคงที่

รวม formatC() กับ cat() และ strrep() เพื่อสร้างตารางข้อความล้วนที่อ่านง่าย รูปแบบนี้พบได้บ่อยในเครื่องมือ CLI และไฟล์บันทึก

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() กับ sprintf() สำหรับการเติมช่องว่าง

ทั้ง formatC() และ sprintf() สามารถสร้างเอาต์พุตที่เติมช่องว่างได้ sprintf() กระชับกว่าสำหรับกรณีง่าย ๆ ส่วน formatC() ยืดหยุ่นกว่าเมื่อต้องใช้การจัดรูปแบบเดียวกันกับเวกเตอร์ทั้งชุด

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

การควบคุมสัญกรณ์วิทยาศาสตร์

formatC(x, format='e', digits=n) หรือ options(scipen=999) ใช้ควบคุมเวลาที่ R จะเปลี่ยนไปใช้สัญกรณ์วิทยาศาสตร์ ตัวเลือก scipen เป็นค่าปรับโทษ ยิ่งค่ามากก็ยิ่งระงับการใช้สัญกรณ์วิทยาศาสตร์ไว้นานขึ้นก่อนเปลี่ยนรูปแบบ

# 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)

การใช้งานจริง: การเติมศูนย์ให้รหัสและป้ายกำกับ

ความต้องการที่พบบ่อยคือรหัสที่เติมศูนย์ด้านหน้า หรือป้ายกำกับที่เติมช่องว่างด้านซ้ายในรายงาน formatC() รองรับทั้งสองกรณี ใช้ flag = '0' เพื่อเติมศูนย์ให้ตัวเลข และใช้ flag = '-' เพื่อจัดสตริงชิดซ้าย

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')
}

ตรวจสอบความเข้าใจอย่างรวดเร็ว

อาร์กิวเมนต์ใดของ formatC() ที่ทำให้เอาต์พุตจัดชิดซ้ายภายในความกว้างที่กำหนด?

การเติมช่องว่างและการจัดแนว: ประเด็นสำคัญ

ประเด็นสำคัญเกี่ยวกับการเติมช่องว่างและการจัดแนวสตริง:

  • formatC(x, width=n) เติมช่องว่างด้านขวาจนมีความกว้าง n และ flag='-' จัดชิดซ้าย
  • formatC(x, format='f', digits=2) ใช้สำหรับทศนิยมแบบคงที่ ส่วน 'e' ใช้สำหรับสัญกรณ์วิทยาศาสตร์
  • format(x, justify='left'/'right'/'centre') ใช้สำหรับการจัดแนวทั่วไป
  • format(x, big.mark=',', nsmall=2) ใช้สำหรับตัวคั่นหลักพันและหลักทศนิยมท้ายตัวเลข
  • strrep(s, n) ทำซ้ำสตริง n ครั้ง — เหมาะสำหรับสร้างเส้นตัวคั่น
  • ใช้ร่วมกับ cat() เพื่อแสดงผลตารางข้อความล้วน
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')

คำถามที่พบบ่อย

บทเรียน “การเติมช่องว่างและจัดแนวสตริง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเติมช่องว่างและจัดแนวสตริง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเติมช่องว่างและจัดแนวสตริง”

ใช้ formatC() และ format() สำหรับผลลัพธ์ข้อความที่มีความกว้างคงที่และจัดแนวแล้ว คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การเติมช่องว่างและจัดแนวสตริง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม

ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างสตริงด้วย paste() และ paste0()
  2. ผลลัพธ์ที่จัดรูปแบบด้วย sprintf()
  3. การแสดงผลด้วย cat() และ print()
  4. การเติมช่องว่างและจัดแนวสตริง
← กลับไปที่ R Academy