كيفية الإصلاح: عدد الصفوف في النتيجة ليس مضاعفًا لطول المتجه (الوسيطة 1)
رسالة التحذير التي قد تواجهها عند استخدام R هي:
Warning message: In cbind(A, B, C): number of rows of result is not a multiple of vector length (arg 1)
يحدث هذا التحذير عادةً عند محاولة استخدام الدالة cbind() لربط الأعمدة معًا من ناقلات ذات أطوال مختلفة.
تجدر الإشارة إلى أن هذه الرسالة هي مجرد تحذير وسيستمر تشغيل التعليمات البرمجية الخاصة بك، ولكن النتائج التي تحصل عليها قد تكون مختلفة عما كنت تتوقعه.
يوضح المثال التالي كيفية تجنب هذا التحذير عمليًا.
كيفية إعادة إنتاج التحذير
لنفترض أننا نستخدم الدالة cbind() لربط ثلاثة نواقل معًا في أعمدة في إطار بيانات:
#define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)
#column bind three vectors into data frame
df <- cbind(A, B, C)
#view data frame
df
Warning message:
In cbind(A, B, C):
number of rows of result is not a multiple of vector length (arg 1)
ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4
تعمل وظيفة cbind مع جميع المتجهات الثلاثة، لكن لاحظ أن قيم المتجه الأول تتكرر مرارًا وتكرارًا.
وهذا ما يسمى “إعادة التدوير” في R.
كيفية تجنب التحذير
لتجنب هذا التحذير تمامًا، علينا التأكد من أن طول كل متجه من المتجهات التي نستخدمها هو نفسه.
إحدى طرق تحقيق ذلك هي ملء القيم المفقودة في المتجه الأقصر بقيم NA كما يلي:
#calculate max length of vectors
max_length <- max(length(A), length(B), length(C))
#set length of each vector equal to max length
length(A) <- max_length
length(B) <- max_length
length(C) <- max_length
#cbind the three vectors together into a data frame
df <- cbind(A, B, C)
#view data frame
df
ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] NA 0 6
[6,] NA 7 4
لاحظ أننا لا نتلقى أي رسائل تحذيرية هذه المرة وأن قيم المتجهات القصيرة مبطنة ببساطة بقيم NA للتأكد من أن كل من المتجهات الثلاثة التي استخدمناها لها أطوال متساوية.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:
كيفية الإصلاح في R: تتضمن الوسائط عددًا مختلفًا من الأسطر
كيفية الإصلاح في R: خطأ في اختيار الوسائط غير المستخدمة
كيفية الإصلاح في R: الاستبدال له طول صفر