R Academy · درس

عرض المخرجات باستخدام cat() وprint()

ميّز بين cat() لإخراج وحدة التحكم وprint() للكائنات.

الدرس 3 من 413 خطوة

عرض المخرجات باستخدام cat() وprint() درس مجاني في R Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.

print() — دالة الإخراج الافتراضية

تُعد print() الطريقة الافتراضية في R لعرض الكائنات. فهي تستخدم فئة الكائن لاختيار طريقة التنسيق المناسبة. في الجلسات التفاعلية، تعادل كتابة اسم متغير استدعاء print() عليه.

x <- c(1, 2, 3, 4, 5)
print(x)
# Equivalent to:
x

cat() — إخراج النصوص الخام

تجمع cat() وسيطاتها وتخرجها كنص خام، من دون علامات اقتباس محيطة، أو مؤشرات فهرس مثل [1]، ومن دون سطر جديد في النهاية افتراضيًا. وهي مصممة لإخراج النص المنسق، لا لعرض كائنات R.

name <- 'Alice'
age  <- 30
cat('Name:', name, '\n')
cat('Age:', age, '\n')
cat('Score:', 92.5, '\n')

الفرق الأساسي: علامات الاقتباس و[1]

يظهر الفرق الأكثر وضوحًا في طريقة عرض السلاسل النصية. تضع print() السلاسل بين علامتي اقتباس وتضيف [1]، بينما تخرج cat() الأحرف الخام من دون أي إضافات.

msg <- 'Hello World'
print(msg)
cat(msg, '\n')

استخدام cat() مع الوسيط sep

تقبل cat() وسيطًا باسم sep يوضع بين كل عنصر من عناصر الإخراج. والقيمة الافتراضية هي مسافة واحدة. استخدم sep = '' من دون فاصل، أو استخدم أي سلسلة أخرى للتحكم الدقيق في تنسيق الإخراج.

cat('a', 'b', 'c', sep = '')
cat('a', 'b', 'c', sep = '-')
cat(1:5, sep = ', ')
cat('x =', 42, sep = '')

استخدام cat() مع الوسيط fill

يضيف الوسيط fill سطرًا جديدًا عندما يتجاوز الإخراج عرضًا محددًا (بعدد الأحرف). يؤدي ضبط fill = TRUE إلى استخدام خيار width الحالي. ويفيد ذلك في التفاف تسلسلات الكلمات الطويلة.

words <- c('The', 'quick', 'brown', 'fox', 'jumps',
           'over', 'the', 'lazy', 'dog')
cat(words, fill = 30)

توزيع الأساليب في print()

إن print() دالة عامة — إذ توزع الاستدعاء على أسلوب خاص بالفئة. فعلى سبيل المثال، تنسق print.data.frame إطارات البيانات بطريقة واضحة، بينما تعرض print.factor المستويات، وهكذا. ولهذا يبدو الاستدعاء نفسه مختلفًا باختلاف الكائنات.

# print dispatches differently per class
print(42L)                        # integer
print(factor(c('a', 'b', 'a')))   # factor with levels
print(list(x = 1, y = 'hi'))      # list

invisible() — منع الطباعة التلقائية

تعيد invisible(x) وسيطتها، لكنها تمنع طباعتها تلقائيًا عند إعادة قيمة من دالة أو تعبير. وتُستخدم في الدوال التي تعيد القيم بصمت، مثل معاملات الإسناد.

# Explicit print shows the value
f <- function(x) invisible(x * 2)
result <- f(5)
# Nothing printed automatically
f(5)
# But print() forces it
print(f(5))

message() — إلى stderr

تكتب message() إلى stderr بدلًا من stdout. وتضيف سطرًا جديدًا تلقائيًا. وبخلاف cat() أو print()، يمكن منع الرسائل باستخدام suppressMessages() والتقاطها باستخدام tryCatch().

message('This goes to stderr')
cat('This goes to stdout\n')
# Suppress messages:
suppressMessages(message('hidden'))
cat('Still visible\n')

متى تستخدم cat() أو print()

استخدم cat() عندما تريد إنتاج إخراج نصي مقروء للبشر — مثل أسطر السجل ورسائل التقدم والتقارير المنسقة. واستخدم print() عندما تريد فحص كائنات R مع الحفاظ بدقة على معلومات نوعها وبنيتها.

# cat() for formatted output
cat(sprintf('Processing %d records...\n', 500))
cat('Done.\n')

# print() to inspect objects
result <- list(n = 500, mean = 4.2, sd = 1.1)
print(result)

استخدام print() مع إطارات البيانات

تنُسق print.data.frame إطارات البيانات مع أرقام الصفوف وعناوين الأعمدة والقيم المصطفة. ويمكنك التحكم في عدد الصفوف المعروضة باستخدام صيغة مثل print(df, n = k) أو باستخدام head() قبل الطباعة.

df <- data.frame(
  name  = c('Alice', 'Bob', 'Carol'),
  score = c(88, 95, 72)
)
print(df)

استخدام cat() لعرض تقدم الحلقة

من الاستخدامات العملية لـ cat() عرض تقدم الحلقة. وبما أن cat() لا تضيف أسطرًا جديدة تلقائيًا، يمكنك بناء السطر تدريجيًا ثم إنهاءه باستخدام '\n'.

for (i in 1:5) {
  cat(sprintf('Processing file %d of 5...\n', i))
}
cat('All files processed.\n')

تحقق سريع

ما دالة الإخراج التي تكتب إلى stderr، وتضيف سطرًا جديدًا تلقائيًا، ويمكن منعها باستخدام suppressMessages()؟

دوال الإخراج: أهم النقاط

أهم النقاط المتعلقة بدوال الإخراج في R:

  • print(x) — لفحص كائنات R؛ تستخدم تنسيقًا خاصًا بالفئة؛ وتضيف [1] وعلامات الاقتباس
  • cat(...) — لإخراج النص الخام؛ من دون علامات اقتباس؛ ومن دون سطر جديد تلقائي؛ استخدم '\n' صراحةً
  • تقبل cat() الوسيطين sep وfill للتحكم في التنسيق
  • invisible(x) — لإعادة x من دون طباعته تلقائيًا
  • message() — تُخرج إلى stderr؛ وتضيف سطرًا جديدًا تلقائيًا؛ ويمكن منعها باستخدام suppressMessages()
  • استخدم cat() وsprintf() معًا للتقارير والسجلات المنسقة
x <- 'result'
print(x)              # shows: [1] "result"
cat(x, '\n')          # shows: result
message('info: ', x)  # goes to stderr
f <- function() invisible(42)
f()                   # nothing printed
print(f())            # forces print: [1] 42
البدء مجانًا

تعلم R مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
43
الدروس
159

الأسئلة الشائعة

هل درس «عرض المخرجات باستخدام cat() وprint()» مجاني؟

نعم — نص درس «عرض المخرجات باستخدام cat() وprint()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.

ماذا ستتعلم في «عرض المخرجات باستخدام cat() وprint()»؟

ميّز بين cat() لإخراج وحدة التحكم وprint() للكائنات. تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟

لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «عرض المخرجات باستخدام cat() وprint()»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟

نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بناء السلاسل النصية باستخدام paste() وpaste0()
  2. المخرجات المنسّقة باستخدام sprintf()
  3. عرض المخرجات باستخدام cat() وprint()
  4. حشو السلاسل النصية ومحاذاتها
← العودة إلى R Academy