برمجة R / أسس اللغة والبيانات / الدرس 1
البرامج والكائنات وحدود الجلسة
ابن حساباً بلغة R الأساسية تظهر مدخلاته وافتراضاته في برنامج واحد.
في هذه الصفحة
أهداف الدرس
- تمييز التعبير والإسناد وفحص الكائن.
- إبعاد الحساب عن حالة مساحة عمل خفية.
- اختيار حدود صريحة للمدخل والخرج.
تقيم R التعبيرات وتنتج كائنات
R لغة للحساب وبيئة إحصائية تفاعلية. قد يعيد التعبير قيمة أو ينشئ كائناً بالإسناد أو يحدث أثراً جانبياً مثل رسم شكل. تميز الأسماء حالة الحروف، ويشيع العامل <- للإسناد في البرامج. تفيد وحدة التحكم في الاستكشاف، لكن يصعب مراجعة حساب لا يعمل إلا بعد أوامر سابقة غير موثقة. اكتب برنامجاً ينشئ مدخلاته الصغيرة ويسمي نتائجه الوسيطة وفق المعنى والوحدة. نجاح أمر تفاعلي دليل عن جلسة واحدة، ولا يثبت وحده قابلية إعادة الإجراء.
للمتجه نوع وطول
ينشئ المثال ثلاث مدد عددية ويحسب متوسطها. تعمل حسابات R على المتجهات بطبيعتها؛ فالتعبير c(10,20,30) متجه واحد لا ثلاثة متغيرات منفصلة. افحص النوع والطول والأسماء والأبعاد عند تعلم دالة. قد تطبع الجلسة التفاعلية القيمة تلقائياً، بينما يحتاج البرنامج خرجاً صريحاً لإظهار المطلوب. نستخدم cat لضبط السطر بدلاً من مسافات طباعة المتجه الافتراضية. يحدد التحقق عقداً مهماً: ينبغي ألا يغير حساب الملخص القياسات المدخلة دون توقع.
minutes <- c(10, 20, 30)
mean_minutes <- mean(minutes)
cat("count=", length(minutes), "; mean=", mean_minutes, " minutes\n", sep = "")
stopifnot(identical(minutes, c(10, 20, 30)))
count=3; mean=20 minutes
ينشئ الإسناد كائنات مسماة، ويعيد mean نتيجة جديدة، ويفحص التحقق ثبات المتجه. اشتُق الخرج ولم يُنفذ.
قد تخفي مساحة العمل اعتماداً عرضياً
قد يبقى كائن من جلسة سابقة فيخفي مدخلاً ناقصاً في البرنامج. وقد يغير مسار البحث والحزم المرفقة الدالة التي يحل إليها الاسم. عرف المدخلات صراحة واستخدم أسماء مؤهلة عند أهمية حد الحزمة. لا تجعل استرجاع مساحة عمل قديمة تلقائياً أساس ادعاء الإعادة. سجل إصدار اللغة والحزم المستخدم فعلاً للتنفيذ. يقتصر المساق على مرافق R الأساسية والموصى بها وبيانات اصطناعية، دون تثبيت حزم أو خدمات أو مجموعات بيانات خارجية.
تنشئ الدالة حد حساب أوضح
يجمع المثال الثاني ملخص المدد في دالة بوسيط واحد. تفحص التحققات النوع العددي وعدم الفراغ ومنتهية القيم قبل الحساب. تعيد الدالة متجهاً مسمى، فيستخرج المستدعي العدد والمتوسط بالاسم. يسهل المدخل الصريح إعادة الاستخدام والاختبار مقارنة بقراءة متغير عام مثل current_data. لا تثبت هذه التحققات أن الأعداد دقائق فعلاً أو أن جمع المشاهدات صحيح؛ فالوحدات والمصدر جزء من عقد المستدعي الموثق.
summarize_minutes <- function(values) {
stopifnot(is.numeric(values), length(values) > 0L, all(is.finite(values)))
c(count = length(values), mean = mean(values))
}
result <- summarize_minutes(c(4, 8, 12))
cat("count=", result[["count"]], "; mean=", result[["mean"]], "\n", sep = "")
cat("function=", is.function(summarize_minutes), "\n", sep = "")
count=3; mean=8
function=TRUE
تعتمد النتيجة على وسيط صريح، ويمنع الاستخراج بالاسم الاعتماد على تنسيق طباعة المتجه. لم تُنفذ R.
افصل السلوك المتوقع عن التحقق المنفذ
لكل مثال R نتيجة متوقعة مشتقة صراحة وبيانات اصطناعية مضمّنة. لا تحتوي بيئة المراجعة على R أو Rscript، لذلك وسمت البرامج توضيحية وغير قابلة للتشغيل في العارض. لا ندعي تحليل R نحوياً أو تنفيذها. يستطيع المتعلم الذي يملك تثبيتاً مناسباً حفظ المثال وتشغيله في جلسة جديدة ومقارنة الخرج والتحققات. احفظ المدخل الدقيق والبيئة والتحذيرات عند الاختلاف؛ فهذا يفصل التوقع التعليمي عن دليل التنفيذ.
الأخطاء الشائعة وإصلاحها
لا يعمل البرنامج إلا في جلسة المؤلف
- لماذا يحدث؟
- بقي كائن غير معلن أو حزمة مرفقة في مساحة العمل.
- كيف تصلحه؟
- عرف المدخلات والاعتمادات وأعد التشغيل في جلسة جديدة.
- كيف تتجنب تكراره؟
- احتفظ ببرنامج اصطناعي مكتفٍ بذاته للمراجعة.
ظهرت النتيجة تفاعلياً واختفت في البرنامج
- لماذا يحدث؟
- افترضت أن الطباعة التفاعلية التلقائية عقد خرج.
- كيف تصلحه؟
- استخدم print أو cat عند الحد المقصود.
- كيف تتجنب تكراره؟
- افحص الخرج بعيداً عن تاريخ الجلسة.
فُسر الملخص بوحدة خاطئة
- لماذا يحدث؟
- لم يفرض المتجه عقد قياس.
- كيف تصلحه؟
- وثق الوحدات وافحص المجالات المبررة للمهمة.
- كيف تتجنب تكراره؟
- استخدم أسماء دالة واحفظ المصدر بجوار القيم.
اختبر فهمك
1. لماذا يفضل وسيط دالة على قراءة متجه عام لملخص قابل لإعادة الاستخدام؟
اعرض الحل المشروح
يرى المستدعي المدخل ويتحكم فيه، ويعالج بيانات متعددة دون إعادة ربط اسم عام، ويقدم الاختبار متجهاً معلوماً. قد تعتمد الدالة أيضاً على بيئتها المحيطة؛ لذلك راجع جسمها وأسماءها الحرة ولا تعتبر تعريف الدالة ضمان استقلال.
2. ما العدد والمتوسط إذا أصبحت المدد 6 و12 و18؟
اعرض الحل المشروح
يبقى العدد ثلاثة ويصبح المتوسط اثنتي عشرة دقيقة لأن المجموع ستة وثلاثون مقسوماً على ثلاثة. غير المتجه وحده واحفظ الوحدة. عند نتيجة مختلفة افحص قيمه والدالة mean الفعلية قبل تعديل الحساب.
أهم ما تعلمته
- يعلن البرنامج الحالة التي يحتاجها.
- للكائن نوع وشكل بجوار القيمة.
- يختلف الخرج المشتق عن دليل التنفيذ.