كيفية الإصلاح في r: الوسيطة بطول صفر
رسالة الخطأ التي قد تواجهها عند استخدام R هي:
Error in if (x < 10) {: argument is of length zero
يحدث هذا الخطأ عادةً عند محاولة إجراء مقارنة منطقية في عبارة if في R، ولكن المتغير الذي تستخدمه في المقارنة يبلغ طوله صفرًا.
مثالان للمتغيرات ذات الطول الصفري هما numeric() أو Character(0) .
يوضح المثال التالي كيفية حل هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا أنشأنا المتغير الرقمي التالي في R بطول صفر:
#create numeric variable with length of zero
x <- numeric()
لنفترض الآن أننا نحاول استخدام هذا المتغير في عبارة if:
#if x is less than 10, print x to console
if(x < 10 ) {
x
}
Error in if (x < 10) {: argument is of length zero
نتلقى خطأ لأن المتغير الذي نحدده له طول صفر.
إذا قمنا ببساطة بإنشاء متغير رقمي بقيمة حقيقية، فلن نتلقى هذا الخطأ أبدًا عند استخدام عبارة if:
#create numeric variable
y <- 5
#if y is less than 10, print y to console
if(y < 10 ) {
y
}
[1] 5
كيفية تجنب الخطأ
لتجنب خطأ طول الوسيطة الصفرية ، نحتاج إلى تضمين دالة isTRUE ، والتي تستخدم المنطق التالي:
is. logical (x) && length(x) == 1 && !is. na (x) && x
إذا استخدمنا هذه الوظيفة في عبارة if، فلن نتلقى خطأً عند مقارنة المتغير بقيمة:
if(isTRUE(x) && x < 10 ) {
x
}
بدلاً من تلقي خطأ، لا نتلقى أي مخرجات لأن الدالة isTRUE(x) يتم تقييمها إلى FALSE ، مما يعني عدم طباعة قيمة x أبدًا.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:
كيفية الإصلاح في R: تتضمن الوسائط عددًا مختلفًا من الأسطر
كيفية الإصلاح في R: خطأ في اختيار الوسائط غير المستخدمة
كيفية الإصلاح في R: الاستبدال له طول صفر