كيفية إصلاح خطأ في r: الوسائط غير المتوافقة


رسالة الخطأ التي قد تواجهها عند استخدام R هي:

 Error in matrix2 %*% matrix1: non-conformable arguments

يحدث هذا الخطأ عندما تحاول ضرب مصفوفتين ولكن عدد الأعمدة في المصفوفة اليسرى لا يتطابق مع عدد الصفوف في المصفوفة اليمنى.

يوضح المثال التالي كيفية حل هذا الخطأ عمليًا.

كيفية إعادة إنتاج الخطأ

لنفترض أن لدينا المصفوفتين التاليتين في R:

 #create first matrix
mat1 <- matrix(1:10, nrow= 5 ) 

mat1

     [,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10

#create second matrix
mat2 <- matrix(1:6, nrow= 2 )

mat2

     [,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

لنفترض الآن أننا نحاول ضرب المصفوفة الثانية بالمصفوفة الأولى:

 #attempt to multiply second matrix by first matrix
mate2 %*% mate1

Error in mat2 %*% mat1: non-conformable arguments

نتلقى خطأ لأن عدد الأعمدة (3) في المصفوفة اليسرى لا يتطابق مع عدد الصفوف (5) في المصفوفة اليمنى.

كيفية تجنب الخطأ

لتجنب خطأ الوسائط غير المطابقة ، يجب عليك بدلاً من ذلك ضرب المصفوفة الأولى بالمصفوفة الثانية:

 multiply first matrix by second matrix
mate1 %*% mate2

     [,1] [,2] [,3]
[1,] 13 27 41
[2,] 16 34 52
[3,] 19 41 63
[4,] 22 48 74
[5,] 25 55 85

لاحظ أننا قادرون على ضرب المصفوفتين بنجاح دون أي أخطاء لأن عدد الأعمدة (2) في المصفوفة اليسرى يطابق عدد الصفوف (2) في المصفوفة اليمنى.

يمكننا أيضًا استخدام الدالة dim() ‎ لعرض عدد الأعمدة والصفوف في كل مصفوفة:

 #view dimensions of first matrix
dim(mat1)

[1] 5 2

#view dimensions of second matrix
dim(mat2)

[1] 2 3

ومن هذا الناتج يمكننا أن نرى:

  • تحتوي المصفوفة الأولى على 5 صفوف وعمودين .
  • تحتوي المصفوفة الثانية على صفين و 3 أعمدة.

يوضح هذا بوضوح أنه يتعين علينا استخدام المصفوفة الأولى على اليسار والمصفوفة الثانية على اليمين عند الضرب لأن المصفوفة الأولى بها عمودان والمصفوفة الثانية بها صفين .

مصادر إضافية

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

كيفية الإصلاح في R: تتضمن الوسائط عددًا مختلفًا من الأسطر
كيفية الإصلاح في R: خطأ في اختيار الوسائط غير المستخدمة
كيفية الإصلاح في R: الاستبدال له طول صفر

Add a Comment

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