كيفية الإصلاح في r: الفهرس خارج الحدود
الخطأ الشائع الذي قد تواجهه في R هو:
Error in x[, 4]: subscript out of bounds
يحدث هذا الخطأ عند محاولة الوصول إلى عمود أو صف من مصفوفة غير موجودة.
يوضح هذا البرنامج التعليمي الخطوات الدقيقة التي يمكنك اتخاذها لحل هذا الخطأ، باستخدام المصفوفة التالية كمثال:
#make this example reproducible set. seeds (0) #create matrix with 10 rows and 3 columns x = matrix(data = sample. int (100, 30), nrow = 10, ncol = 3) #print matrix print (x) [,1] [,2] [,3] [1,] 14 51 96 [2,] 68 85 44 [3,] 39 21 33 [4,] 1 54 35 [5,] 34 74 70 [6,] 87 7 86 [7,] 43 73 42 [8,] 100 79 38 [9,] 82 37 20 [10,] 59 92 28
المثال رقم 1: الفهرس خارج النطاق (بأسطر)
يحاول التعليمة البرمجية التالية الوصول إلى الصف الحادي عشر من المصفوفة، وهو غير موجود:
#attempt to display 11th row of matrix
x[11, ]
Error in x[11, ]: subscript out of bounds
نظرًا لعدم وجود الصف الحادي عشر من المصفوفة، فإننا نحصل على الفهرس خارج الحدود .
إذا كنا لا نعرف عدد الصفوف الموجودة في المصفوفة، فيمكننا استخدام الدالة nrow() لمعرفة ذلك:
#display number of rows in matrix
nrow(x)
[1] 10
يمكننا أن نرى أن هناك 10 صفوف فقط في المصفوفة. لذلك، يمكننا فقط استخدام أرقام أقل من أو تساوي 10 للوصول إلى الصفوف.
على سبيل المثال، يمكننا استخدام الصيغة التالية لعرض الصف العاشر من المصفوفة:
#display 10th row of matrix
x[10, ]
[1] 59 92 28
المثال رقم 2: الفهرس خارج النطاق (بأعمدة)
يحاول التعليمة البرمجية التالية الوصول إلى العمود الرابع من المصفوفة، وهو غير موجود:
#attempt to display 4th column of matrix
x[, 4]
Error in x[, 4]: subscript out of bounds
بما أن العمود الرابع من المصفوفة غير موجود، فإننا نحصل على الفهرس خارج الحدود .
إذا كنا لا نعرف عدد الأعمدة التي تحتوي عليها المصفوفة، فيمكننا استخدام الدالة ncol() لمعرفة ذلك:
#display number of columns in matrix
ncol(x)
[1] 3
نرى أن هناك 3 أعمدة فقط في المصفوفة. وبالتالي، يمكننا فقط استخدام أرقام أقل من أو تساوي 3 للوصول إلى الأعمدة.
على سبيل المثال، يمكننا استخدام الصيغة التالية لعرض العمود الثالث من المصفوفة:
#display 3rd column of matrix
x[, 3]
[1] 96 44 33 35 70 86 42 38 20 28
المثال رقم 3: الفهرس خارج النطاق (الصفوف والأعمدة)
يحاول التعليمة البرمجية التالية الوصول إلى قيمة الصف الحادي عشر والعمود الرابع من المصفوفة، وهي غير موجودة:
#attempt to display value in 11th row and 4th column
x[11, 4]
Error in x[11, 4]: subscript out of bounds
نظرًا لعدم وجود الصف الحادي عشر أو العمود الرابع من المصفوفة، فإننا نحصل على خطأ خارج الحدود .
إذا كنا لا نعرف عدد الصفوف والأعمدة الموجودة في المصفوفة، فيمكننا استخدام الدالة dim() لمعرفة ذلك:
#display number of rows and columns in matrix
dim(x)
[1] 10 3
نرى أن هناك 10 صفوف و3 أعمدة فقط في المصفوفة. لذلك، يمكننا فقط استخدام أرقام أقل من أو تساوي هذه القيم عند الوصول إلى الصفوف والأعمدة.
على سبيل المثال، يمكننا استخدام الصيغة التالية لعرض القيمة في الصف العاشر والعمود الثالث من المصفوفة:
#display value in 10th row and 3rd column of matrix
x[10, 3]
[1] 28
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية حل الأخطاء الشائعة الأخرى في R:
كيفية الإصلاح في R: الأسماء لا تتطابق مع الأسماء السابقة
كيفية الإصلاح في R: طول الكائن الأطول ليس مضاعفًا لطول الكائن الأقصر
كيفية الإصلاح في R: لا يمكن تطبيق التباينات إلا على العوامل ذات المستويين أو أكثر