كيفية الإصلاح: طول الكائن الأطول ليس مضاعفًا لطول الكائن الأقصر


رسالة التحذير الشائعة التي قد تواجهها في R هي:

 Warning message:
In a + b: longer object length is not a multiple of shorter object length

تظهر رسالة التحذير هذه عندما تحاول إجراء عملية على متجهين أو أكثر ليس لهما نفس الطول.

يشارك هذا البرنامج التعليمي الخطوات الدقيقة التي يمكنك استخدامها لحل رسالة التحذير هذه.

كيفية إعادة إنتاج رسالة التحذير

لنفترض أننا أضفنا قيم المتجهين التاليين في R:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9, 10)

#add the two vectors
a+b

[1] 7 9 11 13 15

يُظهر المتجه الناتج مجموع القيم المقابلة في كل متجه.

لم نتلق أي رسائل تحذيرية لأن المتجهين لهما نفس الطول.

ومع ذلك، لنفترض أن المتجه الثاني له قيمة أقل من الأول:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add the two vectors
a+b

[1] 7 9 11 13 11

Warning message:
In a + b: longer object length is not a multiple of shorter object length

نظرًا لأن المتجهين لهما أطوال مختلفة، فإننا نحصل على أن طول الكائن الأطول ليس مضاعفًا للرسالة التحذيرية المتعلقة بطول الكائن الأقصر .

من المهم ملاحظة أن R يفرض دائمًا العملية الحسابية عن طريق إضافة القيمة الأخيرة للمتجه الأول (5) مع القيمة الأولى للمتجه الثاني (6) للحصول على القيمة النهائية وهي 11 .

إذا كنا لا نعرف طول كل متجه، فيمكننا استخدام الدالة length() لمعرفة ذلك:

 #display length of vector a
length(a)

[1] 5

#display length of vector b
length(b)

[1] 4

نرى أن المتجه الأول له 5 قيم بينما المتجه الثاني له 4 قيم فقط. ولهذا السبب نتلقى رسالة تحذير.

كيفية إصلاح رسالة التحذير

لإصلاح رسالة التحذير هذه، نحتاج ببساطة إلى التأكد من أن كلا المتجهين لهما نفس الطول.

على سبيل المثال، إذا علمنا أن المتجه ba أقل بقيمة واحدة من المتجه a، فيمكننا ببساطة إضافة صفر إلى نهاية المتجه b :

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7, 8, 9)

#add zero to the end of vector b
b <- c(b, 0)

#add the two vectors
a+b

[1] 7 9 11 13 5

في معظم الحالات، لا نعرف فعليًا الفرق في الطول بين المتجهين، لذلك يمكننا استخدام حلقة for التالية لإضافة العدد الصحيح من الأصفار إلى نهاية المتجه الأقصر:

 #define two vectors
a <- c(1, 2, 3, 4, 5)
b <- c(6, 7)

#add zeros to the end of vector b
for (i in (( length (b)+1): length (a)))
  +{b = c(b, 0)}

#add the two vectors
a+b

[1] 7 9 11 13 5

تختفي رسالة التحذير لأننا أضفنا ما يكفي من الأصفار إلى نهاية المتجه b للتأكد من أن المتجهين لهما نفس الطول.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية حل الأخطاء الشائعة الأخرى في R:

كيفية الإصلاح في R: الأسماء لا تتطابق مع الأسماء السابقة
كيفية الإصلاح في R: NAs التي تم تقديمها عن طريق الإكراه
كيفية الإصلاح في R: الفهرس خارج الحدود
كيفية الإصلاح في R: لا يمكن تطبيق التباينات إلا على العوامل ذات المستويين أو أكثر

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *