عمليات المجموعات
جزء من قسم المنطق وتدفق التنفيذ في رحلة 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التحدي
سهلأكمل 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")
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
1السلاسل النصية بعمق
السلاسل الفرعية باستخدام substr()التنسيق باستخدام sprintf()التقسيم والضمالبحث في السلاسل النصيةاستبدال النصوصمراجعة - منشئ اسم المستخدم4المصفوفات
إنشاء المصفوفاتفهرسة المصفوفاتملخصات الصفوف والأعمدةالحساب على المصفوفاتمراجعة - مخطط المقاعد2استرجاع القيم باستخدام المفاتيح
البحث في المتجهات المُسمّاةالتحقق من المفاتيحإضافة المفاتيح وإزالتهاالتكرار عبر الأسماءمراجعة - مكتب الأسهم3المجموعات والعدّ
القيم الفريدةعمليات المجموعاتاختبارات الانتماءالعد باستخدام table()مراجعة - ضيوف الفعاليةتدرّب بنفسك: مترجم R عبر الإنترنت