المخرجات المنسّقة باستخدام sprintf()
تحكّم في المنازل العشرية والحشو والمحاذاة باستخدام سلاسل تنسيق sprintf.
المخرجات المنسّقة باستخدام sprintf() درس مجاني في R Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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: نسّق كعدد عشري مع منزلتين عشريتين تمامًا. يتحكم الرقم بين . و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= منزلتان عشريتان؛ و%10.2f= عرض 10 ومَنزلتان عشريتان%-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))تعلم R مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 43
- الدروس
- 159
الأسئلة الشائعة
هل درس «المخرجات المنسّقة باستخدام sprintf()» مجاني؟
نعم — نص درس «المخرجات المنسّقة باستخدام sprintf()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.
ماذا ستتعلم في «المخرجات المنسّقة باستخدام sprintf()»؟
تحكّم في المنازل العشرية والحشو والمحاذاة باستخدام سلاسل تنسيق sprintf. تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟
لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «المخرجات المنسّقة باستخدام sprintf()»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟
نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بناء السلاسل النصية باستخدام paste() وpaste0()
- المخرجات المنسّقة باستخدام sprintf()
- عرض المخرجات باستخدام cat() وprint()
- حشو السلاسل النصية ومحاذاتها