برمجة R / التقييم والملكية والنتائج القابلة للإعادة / الدرس 18
مسار تحليل قابل للتدقيق
اجمع المدخل المحدد النوع وسياسة الرفض والثوابت وحد النتيجة القابل للمراجعة.
في هذه الصفحة
أهداف الدرس
- كتابة عقد كامل من المدخل إلى الملخص.
- اختيار الرفض الكلي أو عزل الصفوف صراحة.
- فصل فحص البنية عن الاستنتاج الموضوعي.
ابدأ بسؤال صغير صريح
لنفترض سجلاً اصطناعياً لمدة غير سالبة لكل عنصر ذي هوية فريدة. المطلوب العدد ومجموع الدقائق ومتوسطها للسجلات الصالحة. هذا وصف لا تنبؤ أو سببية أو استدلال مجتمعي. حدد الأهلية وهل ترفض قيمة مفقودة أو غير صالحة المدخل كله أم تنشئ تقرير صفوف مرفوضة. تحدد هذه القرارات المقام ومعنى المتوسط. اجعل المسار صغيراً ليتتبع المراجع التحويلات ويفحص المثال يدوياً.
افحص المعنى عند إدخاله
يستورد المثال CSV داخلياً بأنواع معلنة ويفحص الأسماء وتفرد الهوية وعدم فراغها وعدم فراغ الجدول ومنتهية المدد وعدم سلبيتها، ثم يعيد نتيجة مسماة. يرفض النقص بدلاً من التخمين. قد يفشل التحليل قبل التحققات؛ فيبقى المدخل غير مدعوم ولا يستبدل بصفر. يحتاج محلل مشترك فعلي تشخيص رموز وتوافقاً أوسع؛ ويحدد المثال عقداً ضيقاً ولا يحل كل لهجات CSV والمحليات.
summarize_csv <- function(text) {
d <- read.csv(text = text, colClasses = c("character", "numeric"),
stringsAsFactors = FALSE, na.strings = "")
if (!identical(names(d), c("id", "minutes"))) stop("unexpected schema")
if (anyNA(d$id) || any(d$id == "") || anyDuplicated(d$id)) stop("invalid ids")
if (nrow(d) == 0L || anyNA(d$minutes) || !all(is.finite(d$minutes)) || any(d$minutes < 0)) stop("invalid minutes")
list(rows = nrow(d), total = sum(d$minutes), mean = mean(d$minutes))
}
result <- summarize_csv("id,minutes\na,3\nb,9")
cat("rows=", result$rows, "; total=", result$total, "; mean=", result$mean, "\n", sep = "")
rows=2; total=12; mean=6
يمر المسار في الذاكرة بمخطط ضيق وهويات فريدة وقياسات منتهية غير سالبة وملخص صريح.
السياسة البديلة تحليل مختلف
يعزل المثال الثاني الصفوف صراحة من متجهات معطاة، ويعرض المواضع المقبولة والمرفوضة ومجموع المقبول. يختلف عن رفض المدخل كله، ولا يدخل بصمت بعد رؤية النتيجة. احفظ المعرفات والرموز الخام والأسباب عند السماح، وافحص التفرد مستقلاً إذا استمر شرط سجل لكل عنصر. ليس الصف المرفوض صفراً مقاساً. يمكن إرجاع رموز أسباب متعددة لكل صف واختبار تداخلها بدلاً من قرار منطقي فقط.
audit_rows <- function(ids, values) {
stopifnot(length(ids) == length(values))
valid <- !is.na(ids) & nzchar(ids) & !is.na(values) & is.finite(values) & values >= 0
list(accepted = which(valid), rejected = which(!valid),
total = sum(values[valid]))
}
result <- audit_rows(c("a", "b", "c"), c(3, NA_real_, -1))
cat("accepted=", paste(result$accepted, collapse = ","), "\n", sep = "")
cat("rejected=", paste(result$rejected, collapse = ","), "\n", sep = "")
cat("accepted total=", result$total, "\n", sep = "")
accepted=1
rejected=2,3
accepted total=3
تحفظ السياسة البديلة مواضع الرفض صراحة بدلاً من الحذف الصامت؛ ويبقى التفرد فحصاً منفصلاً.
استخدم ثوابت وأمثلة مستقلة
يعني صفان بمدتين ثلاثة وتسعة مجموع اثني عشر ومتوسط ستة. افحص العدد والأسماء والأنواع والقيم. في العزل يجب أن يغطي المقبول والمرفوض كل موضع مرة واحدة مع حفظ محاذاة الهويات. أضف حالات التكرار والعنصر الواحد والفراغ والفقد وغير المنتهي والسالب والعمود غير المتوقع. تكمل الثوابت الأمثلة؛ فلا يكشف مجموع محفوظ هوية متبادلة أو وحدة محولة خطأ.
سلم النتيجة بنطاق ودليل تنفيذ
اجمع النص والمخطط والوحدات والرفض والإعداد وسجل البيئة مع الملخص. يجب أن يحفظ الرسم أو النموذج اللاحق العقد. صرح بالمنفذ والتوقع الموثق منفصلين. لم تتوفر R أو محللها، فتظل الأمثلة الكاملة توضيحية ومخرجاتها مشتقة. افحصها في جلسة مدعومة جديدة قبل اعتبار التنفيذ المحلي دليلاً وعالج التحذيرات. يدعم المسار الاصطناعي فهم الصحة المحلية، ولا يضمن بيانات أو قراراً خارجياً.
الأخطاء الشائعة وإصلاحها
بدأ المسار الصارم حذف الصفوف بعد متوسط غير مرغوب
- لماذا يحدث؟
- تغيرت الأهلية استجابة للنتيجة.
- كيف تصلحه؟
- حدد السياسة ووثقها قبل التفسير.
- كيف تتجنب تكراره؟
- احفظ الرفض وتاريخ تعديل التحليل.
أخفى مجموع صحيح هويات متبادلة
- لماذا يحدث؟
- فُحص الحساب المجمع وحده.
- كيف تصلحه؟
- افحص روابط هوية وقيمة معلومة ومحاذاة الصفوف.
- كيف تتجنب تكراره؟
- اجمع مثال بنية ومثال عدد.
عُرض خرج مشتق كاختبار منفذ
- لماذا يحدث؟
- اختلط التوقع بالدليل التنفيذي.
- كيف تصلحه؟
- سم البيئة والفحوص الفعلية بدقة.
- كيف تتجنب تكراره؟
- افصل الاشتقاق والتحليل النحوي والتنفيذ في السجل.
اختبر فهمك
1. ماذا يعيد المثال الصارم للمدتين ثلاثة وتسعة ولماذا لا يتجاهل الفقد؟
اعرض الحل المشروح
يعيد صفين ومجموع اثني عشر ومتوسط ستة. يطلب العقد قياساً مرصوداً منتهياً غير سالب لكل مدة، فيرفض الفقد بدلاً من تغيير المقام. تحتاج سياسة أخرى خرجاً واختبارات صريحة.
2. ما الدليل الإضافي المناسب لعزل الصفوف في مراجعة فعلية؟
اعرض الحل المشروح
احفظ الهوية والمصدر الخام عند السماح وأسباب الرفض وأعداداً تغطي الجميع وسياسة التفرد. تحقق من بقاء المواضع المقبولة مع قيمها الأصلية. صرح بأن الملخص للمقبول فقط لا لجميع القياسات المقدمة.
أهم ما تعلمته
- تحدد الأهلية والرفض المقام.
- افحص المعنى والبنية والحساب عند حدود مستقلة.
- صرح بدليل التنفيذ والحدود الخارجية بدقة.