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

ผลลัพธ์ที่จัดรูปแบบด้วย sprintf()

ควบคุมจำนวนตำแหน่งทศนิยม การเติมช่องว่าง และการจัดแนวด้วยสตริงรูปแบบของ sprintf

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

พื้นฐานของ sprintf()

sprintf() จัดรูปแบบสตริงโดยใช้สตริงรูปแบบที่มีตัวยึดตำแหน่ง ทำงานเหมือน printf ของ C ทุกประการ อาร์กิวเมนต์แรกคือแม่แบบรูปแบบ ส่วนอาร์กิวเมนต์ถัดไปจะเติมค่าลงในตัวยึดตำแหน่งตามลำดับ

sprintf('There are %d items', 5)
sprintf('Hello, %s!', 'Alice')
sprintf('Price: %.2f', 9.999)

ตัวยึดตำแหน่งสำหรับจำนวนเต็มและสตริง

%d ใช้จัดรูปแบบจำนวนเต็ม, %s ใช้จัดรูปแบบสตริง และ %f ใช้จัดรูปแบบจำนวนจุดลอยตัว ตัวยึดตำแหน่งแต่ละตัวจะถูกแทนที่ตามลำดับด้วยอาร์กิวเมนต์ที่สอดคล้องกัน

name <- 'Bob'
age  <- 34
score <- 88.5
sprintf('%s is %d years old with score %.1f', name, age, score)

การควบคุมจำนวนตำแหน่งทศนิยม

%.2f หมายถึง จัดรูปแบบเป็นจำนวนจุดลอยตัวโดยมีทศนิยม בדיוק 2 ตำแหน่ง ตัวเลขระหว่าง . และ f จะควบคุมความละเอียด เหมาะสำหรับสกุลเงิน เปอร์เซ็นต์ และค่าทางวิทยาศาสตร์

pi_val <- 3.14159265
sprintf('%.0f', pi_val)
sprintf('%.2f', pi_val)
sprintf('%.5f', pi_val)
sprintf('$%.2f', 1234.5)

ความกว้างช่องและการเติมช่องว่าง

ตัวเลขก่อนตัวอักษรรูปแบบจะกำหนดความกว้างขั้นต่ำของช่อง ค่าเริ่มต้นคือจัดชิดขวาและเติมช่องว่างทางซ้าย วิธีนี้มีประโยชน์สำหรับจัดแนวคอลัมน์ในรายงานข้อความธรรมดา

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

การจัดชิดซ้ายด้วยแฟล็ก -

ใส่ - นำหน้าตัวเลขความกว้างเพื่อจัดข้อความชิดซ้ายภายในช่อง นี่เป็นวิธีมาตรฐานในการสร้างคอลัมน์ชิดซ้ายในผลลัพธ์ข้อความความกว้างคงที่

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

สัญกรณ์วิทยาศาสตร์ด้วย %e และ %g

%e บังคับใช้สัญกรณ์วิทยาศาสตร์ (เช่น 1.23e+04) ส่วน %g จะเลือก %f หรือ %e ที่สั้นกว่าโดยอัตโนมัติ — มีประโยชน์เมื่อค่าครอบคลุมหลายลำดับขนาด

x <- 0.000123456
y <- 123456789
sprintf('%e', x)
sprintf('%e', y)
sprintf('%g', x)
sprintf('%g', y)

การเติมศูนย์ด้วยแฟล็ก 0

ใส่ 0 นำหน้าความกว้างเพื่อเติมตัวเลขศูนย์นำหน้าแทนช่องว่าง นิยมใช้กับรหัสที่เติมศูนย์ วันที่ และรูปแบบการกำหนดหมายเลขไฟล์

ids <- c(1, 12, 123, 1234)
sprintf('ID_%05d', ids)
# Date parts
sprintf('%04d-%02d-%02d', 2024, 5, 7)

การจัดรูปแบบเปอร์เซ็นต์

หากต้องการแสดงอัตราส่วนเป็นเปอร์เซ็นต์ ให้คูณด้วย 100 แล้วใช้ %.1f%% เครื่องหมาย %% สองตัวจะแทรกเครื่องหมายเปอร์เซ็นต์ตามตัวอักษรในผลลัพธ์ (หากใช้ % เดียว จะถูกตีความว่าเป็นจุดเริ่มต้นของตัวยึดตำแหน่ง)

pass_rate <- 0.8743
sprintf('Pass rate: %.1f%%', pass_rate * 100)
growth <- 0.0523
sprintf('Growth: +%.2f%%', growth * 100)

sprintf() ทำงานกับเวกเตอร์

เมื่อส่งเวกเตอร์เป็นอาร์กิวเมนต์ให้ sprintf() ฟังก์ชันจะวนทำงานกับสมาชิกในเวกเตอร์โดยอัตโนมัติ และส่งคืนสตริงที่จัดรูปแบบแล้วหนึ่งสตริงต่อสมาชิก สตริงรูปแบบเองจะถูกวนใช้ซ้ำ

products <- c('Apple', 'Banana', 'Cherry')
prices   <- c(0.99, 0.59, 2.49)
sprintf('%-8s costs $%.2f', products, prices)

ตัวยึดตำแหน่งหลายตัว อาร์กิวเมนต์หลายตัว

ตัวยึดตำแหน่งแต่ละตัวจะใช้อาร์กิวเมนต์หนึ่งตัวตามลำดับ คุณสามารถผสม %d, %f และ %s ได้อย่างอิสระในสตริงรูปแบบเดียว และอาร์กิวเมนต์เวกเตอร์ทั้งหมดจะถูกวนใช้ซ้ำจนมีความยาวเท่ากับอาร์กิวเมนต์ที่ยาวที่สุด

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() เทียบกับ paste() — ควรใช้เมื่อใด

ใช้ paste()/paste0() สำหรับการต่อสตริงอย่างง่าย และใช้ sprintf() เมื่อจำเป็นต้องจัดรูปแบบตัวเลขอย่างแม่นยำ (ตำแหน่งทศนิยม ความกว้าง การเติมอักขระ) sprintf() มีไวยากรณ์มากกว่า แต่ให้คุณควบคุมลักษณะที่แสดงของตัวเลขได้อย่างสมบูรณ์

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)

ตรวจสอบความเข้าใจ

รหัสรูปแบบใดใน sprintf() ที่แทรกเครื่องหมายเปอร์เซ็นต์ตามตัวอักษร % ลงในผลลัพธ์

ประเด็นสำคัญของ sprintf()

ประเด็นสำคัญของ sprintf():

  • %d จำนวนเต็ม, %f จำนวนจุดลอยตัว, %s สตริง, %e สัญกรณ์วิทยาศาสตร์, %g อัตโนมัติ
  • %.2f = ทศนิยม 2 ตำแหน่ง; %10.2f = ความกว้าง 10 และทศนิยม 2 ตำแหน่ง
  • %-10s = จัดชิดซ้ายในช่องกว้าง 10 อักขระ; %05d = เติมศูนย์ให้ครบ 5 หลัก
  • %% = เครื่องหมายเปอร์เซ็นต์ตามตัวอักษรในผลลัพธ์
  • sprintf() ทำงานกับอาร์กิวเมนต์แบบเวกเตอร์
  • ควรเลือก sprintf() แทน paste() เมื่อความแม่นยำของการจัดรูปแบบตัวเลขมีความสำคัญ
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))

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

บทเรียน “ผลลัพธ์ที่จัดรูปแบบด้วย sprintf()” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ผลลัพธ์ที่จัดรูปแบบด้วย sprintf()”

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

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

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

บทเรียน “ผลลัพธ์ที่จัดรูปแบบด้วย sprintf()” ใช้เวลานานแค่ไหน

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

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

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

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

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