العمليات الحسابية وإعادة تدوير المتجهات
جزء من قسم Fundamentals في رحلة R على Coddy — الدرس 69 من 78.
عندما تقوم بإجراء عمليات حسابية بين متجهين لهما نفس الطول، يقوم R بتطبيق العملية عنصراً بعنصر:
a <- c(1, 2, 3)
b <- c(10, 20, 30)
print(a + b)المخرجات:
[1] 11 22 33ولكن ماذا يحدث عندما تكون للمتجهات أطوال مختلفة؟ تستخدم لغة R سلوكاً يسمى إعادة التدوير (recycling). يتم تكرار المتجه الأقصر ليتناسب مع طول المتجه الأطول:
numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)المخرجات:
[1] 10 200 30 400 50 600هنا، تمت إعادة تدوير multiplier ليصبح c(10, 100, 10, 100, 10, 100) قبل عملية الضرب. هذا مفيد بشكل خاص عند التعامل مع قيمة واحدة:
prices <- c(10, 20, 30)
print(prices * 1.1)المخرجات:
[1] 11 22 33يتم تكرار القيمة المفردة 1.1 لتتناسب مع طول prices. كن حذرًا عندما لا يكون طول المتجه الأطول مضاعفًا لطول المتجه الأقصر، حيث سيستمر R في تنفيذ العملية ولكنه قد يُصدر تحذيرًا بشأن التكرار الجزئي (partial recycling).
التحدي
سهلسوف تتلقى سطرين من المدخلات:
- قائمة من الأرقام مفصولة بفاصلة تمثل القيم الأساسية (على سبيل المثال،
10,20,30,40,50,60) - قائمة من المضاعفات مفصولة بفاصلة (على سبيل المثال،
2,5)
باستخدام حساب المتجهات وإعادة التدوير (recycling):
- أنشئ متجهًا عدديًا من القيم الأساسية
- أنشئ متجهًا عدديًا من المضاعفات
- اضرب القيم الأساسية في المضاعفات (سيقوم R بإعادة تدوير المتجه الأقصر)
- اطبع نتيجة عملية الضرب
- أضف
100إلى كل عنصر من عناصر القيم الأساسية الأصلية (إعادة تدوير قيمة واحدة) - اطبع نتيجة عملية الجمع
- اطرح متجه المضاعفات من متجه القيم الأساسية
- اطبع نتيجة عملية الطرح
على سبيل المثال، إذا كانت المدخلات هي:
5,10,15,20,25,30
3,7يجب أن تكون المخرجات:
[1] 15 70 45 140 75 210
[1] 105 110 115 120 125 130
[1] 2 3 12 13 22 23التفسير:
- الضرب: يتم إعادة تدوير المضاعفات
c(3, 7)لتصبحc(3, 7, 3, 7, 3, 7)، مما ينتج عنه5*3, 10*7, 15*3, 20*7, 25*3, 30*7 - الجمع: يتم إعادة تدوير القيمة الواحدة
100لتضاف إلى كل عنصر - الطرح: يتم إعادة تدوير المضاعفات مرة أخرى، مما ينتج عنه
5-3, 10-7, 15-3, 20-7, 25-3, 30-7
ورقة مرجعية
عند إجراء العمليات الحسابية بين المتجهات ذات الأطوال المختلفة، تستخدم لغة R إعادة التدوير (recycling) - حيث يتم تكرار المتجه الأقصر ليتناسب مع طول المتجه الأطول:
numbers <- c(1, 2, 3, 4, 5, 6)
multiplier <- c(10, 100)
print(numbers * multiplier)المخرجات:
[1] 10 200 30 400 50 600يتم إعادة تدوير المتجه multiplier إلى c(10, 100, 10, 100, 10, 100) قبل عملية الضرب.
تعد إعادة تدوير القيمة الواحدة مفيدة بشكل خاص:
prices <- c(10, 20, 30)
print(prices * 1.1)المخرجات:
[1] 11 22 33يتم إعادة تدوير القيمة 1.1 لتتناسب مع طول prices.
ملاحظة: قد تُصدر لغة R تحذيراً عندما لا يكون طول المتجه الأطول مضاعفاً لطول المتجه الأقصر.
جرّب بنفسك
# قراءة المدخلات
con <- file("stdin", "r")
base_input <- suppressWarnings(readLines(con, n = 1))
multipliers_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# تحليل القيم المفصولة بفاصلة إلى متجهات عددية
base_values <- as.numeric(strsplit(base_input, ",")[[1]])
multipliers <- as.numeric(strsplit(multipliers_input, ",")[[1]])
# TODO: اكتب كودك أدناه
# 1. اضرب base_values في multipliers (ستحدث عملية التكرار "recycling" تلقائياً)
# 2. اطبع نتيجة الضرب
# 3. أضف 100 إلى كل عنصر في base_values
# 4. اطبع نتيجة الجمع
# 5. اطرح multipliers من base_values
# 6. اطبع نتيجة الطرحيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Fundamentals
4المعاملات - الجزء الثاني
المعاملات المنطقية (AND, OR)المعاملات المنطقية - الجزء الثاني (NOT)مراجعة - المنطق البسيطالمنطق المتجهي - الجزء الأولالمنطق المتجهي - الجزء الثاني7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم13المتجهات المتقدمة
تقطيع وفهرسة المتجهاتالفهرسة المنطقيةالعمليات الحسابية وإعادة تدوير المتجهاتالمعامل %in%2المتغيرات وأنواع البيانات
نوع البيانات الرقمينوع البيانات الصحيحنوع البيانات الحرفينوع البيانات المنطقيالتحقق من أنواع البياناتقواعد التسميةالقيم المفقودة: NAملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة Forحلقة Whileجملة Breakجملة Next (Continue)مراجعة - المضروب (Factorial)توليد المتتاليات (seq, :)الحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةقسمة الأعداد الصحيحة وباقي القسمةمعاملات الإسنادملخص - عمليات رياضية بسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
طباعة المخرجاتاستخدام Cat للمخرجاتالمخرجات مع المتغيراتقراءة المدخلات باستخدام readline()أساسيات تحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ