การเติมช่องว่างและจัดแนวสตริง
ใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างสตริงด้วย paste() และ paste0()
- ผลลัพธ์ที่จัดรูปแบบด้วย sprintf()
- การแสดงผลด้วย cat() และ print()
- การเติมช่องว่างและจัดแนวสตริง