0Pricing
R Academy · درس

بناء السلاسل النصية باستخدام paste() وpaste0()

ادمج السلاسل النصية مع فواصل باستخدام paste وpaste0.

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

أساسيات paste()

تحوّل paste() وسائطها إلى سلاسل محارف وتضمّها باستخدام فاصل. يكون الفاصل الافتراضي مسافة واحدة ' '. وهي أكثر دوال بناء السلاسل تنوعًا في R الأساسي.

paste('Hello', 'World')
paste('User', 'ID', ':', 42)
paste('R', 'version', '4.3.1')

‏paste0() — اختصار الفاصل الصفري

تطابق paste0() تمامًا paste(..., sep=''). فهي تضم السلاسل من دون فاصل بينها. وهذه هي الدالة المفضلة عند إنشاء مسارات الملفات أو أسماء الأعمدة أو عناوين URL برمجيًا.

paste0('file_', 1:5, '.csv')
paste0('col_', c('a', 'b', 'c'))
paste0('/home/user/', 'data.csv')

تغيير الفاصل باستخدام sep

يتحكم الوسيط sep فيما يوضع بين كل وسيط وآخر. استخدمه لإنشاء صفوف CSV أو مسارات ملفات أو سلاسل تواريخ أو أي مخرجات محددة بفواصل.

# Hyphen-separated date
paste('2024', '05', '29', sep = '-')
# Slash-separated path
paste('home', 'user', 'docs', sep = '/')
# Comma-separated
paste('Alice', 'Bob', 'Carol', sep = ', ')

‏paste() المتجهة

تُعد paste() دالة متجهة — فعند إعطائها متجهات، تطابق العناصر موضعًا بموضع (مع تكرار المتجهات الأقصر عند الحاجة). ويكون طول النتيجة مساويًا لطول أطول متجه إدخال.

labels <- c('Item', 'Item', 'Item')
numbers <- c(1, 2, 3)
paste(labels, numbers)
# Shorter form using recycling
paste('Item', 1:5)

دمج متجه في سلسلة واحدة

يضم الوسيط collapse جميع عناصر متجه النتيجة في سلسلة واحدة، مستخدمًا قيمة الدمج فاصلًا بين العناصر. من دون collapse تحصل على متجه محارف؛ ومعه تحصل على سلسلة واحدة.

fruits <- c('apple', 'banana', 'cherry')
# Without collapse: character vector of length 3
paste('I like', fruits)
# With collapse: single string
paste('I like', fruits, collapse = ' and ')

استخدام sep وcollapse معًا

يمكنك استخدام كل من sep وcollapse في الاستدعاء نفسه. أولًا، يضم sep متجهات الوسائط عنصرًا بعنصر، ثم يضم collapse متجه المحارف الناتج في سلسلة واحدة.

first <- c('John', 'Jane', 'Bob')
last  <- c('Doe', 'Smith', 'Brown')
# sep joins first+last, collapse joins all three names
paste(first, last, sep = ' ', collapse = ', ')

استخدام paste0() لإنشاء أسماء المتغيرات

تُستخدم paste0() عادةً لإنشاء أسماء المتغيرات أو الأعمدة ومسارات الملفات والسلاسل الشبيهة بـ SQL برمجيًا، من دون فواصل زائدة.

# Build column names
col_names <- paste0('Q', 1:5, '_score')
print(col_names)
# Build file paths
years <- 2020:2023
files <- paste0('data/report_', years, '.csv')
print(files)

التحويل الرقمي في paste()

تحوّل paste() الأعداد والقيم المنطقية والأنواع الأخرى تلقائيًا إلى سلاسل محارف. لا تحتاج إلى استدعاء as.character() أولًا — إذ تتولى paste() ذلك بشفافية.

n <- 42
pi_val <- 3.14159
flag <- TRUE
paste('Count:', n)
paste('Pi =', pi_val)
paste('Active:', flag)
paste0('n=', n, ' pi=', round(pi_val, 2))

إنشاء صفوف شبيهة بـ CSV

اجمع بين paste() المتجهة وcollapse = ',' لإنشاء سلاسل مخرجات CSV بسيطة من إطار بيانات، من دون تحميل أي حزمة خارجية.

names_vec  <- c('Alice', 'Bob', 'Carol')
scores_vec <- c(85, 92, 78)
rows <- paste(names_vec, scores_vec, sep = ',')
cat(paste(rows, collapse = '\n'))

التعامل مع NA في paste()

على خلاف كثير من دوال R، تحوّل paste() القيمة NA إلى السلسلة الحرفية 'NA' بدلًا من تمرير القيمة المفقودة. وهذا مفيد، لكنه قد يفاجئ المستخدمين الذين يتوقعون التعامل الصامت مع القيم المفقودة.

x <- c('Hello', NA, 'World')
paste(x, '!')
# NA becomes the string 'NA'
result <- paste0('Value: ', NA)
print(result)
print(class(result))

أنماط عملية: استخدام paste() في التقارير

تتألق paste عند إنشاء سلاسل تقارير سهلة القراءة. اجمع بين paste0() وround() وpaste() مع collapse لبناء جمل تلخيصية من البيانات.

mean_score <- 83.7
n_students  <- 28
high_score  <- 99
msg <- paste0(
  'Class summary: ', n_students, ' students, ',
  'mean score ', round(mean_score, 1), ', ',
  'top score ', high_score, '.'
)
cat(msg)

تحقق سريع

ماذا يفعل الوسيط collapse في paste()؟

‏paste() وpaste0(): أهم النقاط

أهم النقاط حول paste() وpaste0():

  • تضم paste(a, b) باستخدام مسافة؛ بينما تضم paste0(a, b) من دون فاصل
  • يتحكم sep في السلسلة الموضوعة بين كل وسيط وآخر
  • يختزل collapse المتجه الناتج إلى سلسلة واحدة
  • كلتا الدالتين متجهتان وتكرران الوسائط الأقصر
  • تُحوّل NA إلى السلسلة الحرفية 'NA'
  • تُحوّل الأعداد والقيم المنطقية تلقائيًا إلى محارف
# sep vs collapse at a glance
x <- c('a', 'b', 'c')
y <- c(1, 2, 3)
cat('paste (sep=-)  :', paste(x, y, sep = '-'), '\n')
cat('paste (collapse):', paste(x, collapse = '+'), '\n')
cat('paste0          :', paste0(x, y), '\n')

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

هل درس «بناء السلاسل النصية باستخدام paste() وpaste0()» مجاني؟

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

ماذا ستتعلم في «بناء السلاسل النصية باستخدام paste() وpaste0()»؟

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

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

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

كم من الوقت يستغرق درس «بناء السلاسل النصية باستخدام paste() وpaste0()»؟

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

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

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

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

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