Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

عمليات المجموعات

جزء من قسم المنطق وتدفق التنفيذ في رحلة R على Coddy. الدرس 13 من 64.

تجمع ثلاث دوال متجهين كمجموعتين. تُرجع كل دالة قيماً دون تكرار:

تحتوي union(a, b) على القيم الموجودة في أيٍّ من المتجهين، وتحتوي intersect(a, b) على القيم الموجودة في كليهما، بينما تحتوي setdiff(a, b) على قيم a غير الموجودة في b.

mon <- c("ana", "ben", "cy")
tue <- c("ben", "dee", "cy", "ben")
print(union(mon, tue))
print(intersect(mon, tue))
print(setdiff(mon, tue))

الناتج:

[1] "ana" "ben" "cy"  "dee"
[1] "ben" "cy" 
[1] "ana"

setdiff() تعتمد على ترتيب وسيطاتها. بدّل بينهما للحصول على القيم الموجودة في المتجه الثاني فقط:

mon <- c("ana", "ben", "cy")
tue <- c("ben", "dee", "cy")
print(setdiff(tue, mon))

الناتج:

[1] "dee"

عندما لا يتبقى شيء، تكون النتيجة متجهًا فارغًا، character(0) للنصوص:

print(intersect(c("a", "b"), c("x", "y")))

الخرج:

character(0)

تحافظ النتائج على ترتيب المتجه الأول. رتّبها عندما يحتاج الناتج إلى ترتيب متوقّع، وتحقّق من وجود نتيجة فارغة قبل الدمج:

a <- c("pear", "fig", "kiwi")
b <- c("kiwi", "pear")
both <- sort(intersect(a, b))
print(paste(both, collapse = ", "))
print(length(setdiff(b, a)) == 0)

الناتج:

[1] "kiwi, pear"
[1] TRUE
challenge icon

التحدي

سهل

أكمل compare_courses(a, b). يمثّل a وb طلاب مقررين دراسيين. أعد ثلاثة أسطر:

  • Both: متبوعًا بالطلاب الموجودين في المقررين كليهما
  • Only first: متبوعًا بالطلاب الموجودين في a فقط
  • Total: متبوعًا بعدد الطلاب المختلفين في المقررين معًا

رتّب الأسماء في كل قائمة، وافصل بينها باستخدام , . تُكتب القائمة الفارغة بالشكل none.

يقرأ الكود المرفق المقررين كسطرين مفصولين بفواصل، ويطبع كل سطر مُعاد.

جرّب بنفسك

compare_courses <- function(a, b) {
  # اكتب الكود الخاص بك هنا
  c("Both: ", "Only first: ", "Total: 0")
}

# كود الإدخال/الإخراج المُزوَّد: أبقه كما هو
input <- suppressWarnings(readLines(file("stdin")))
cat(compare_courses(strsplit(input[1], ",")[[1]], strsplit(input[2], ",")[[1]]), sep = "\n")
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم R عبر الإنترنت