كيفية الإصلاح في r: dim(x) يجب أن يكون له طول موجب
الخطأ الذي قد تواجهه في R هو:
Error in apply(df$var1, 2, mean): dim(X) must have a positive length
يحدث هذا الخطأ عند محاولة استخدام الدالة application() لحساب قياس لعمود إطار بيانات أو مصفوفة، مع توفير متجه كوسيطة بدلاً من إطار بيانات أو مصفوفة.
يشرح هذا البرنامج التعليمي بالضبط كيفية إصلاح هذا الخطأ.
كيفية إعادة إنتاج الخطأ
لنفترض أن لدينا إطار البيانات التالي في R:
#create data frame
df <- data. frame (points=c(99, 97, 104, 79, 84, 88, 91, 99),
rebounds=c(34, 40, 41, 38, 29, 30, 22, 25),
blocks=c(12, 8, 8, 7, 8, 11, 6, 7))
#view data frame
df
points rebound blocks
1 99 34 12
2 97 40 8
3 104 41 8
4 79 38 7
5 84 29 8
6 88 30 11
7 91 22 6
8 99 25 7
لنفترض الآن أننا نحاول استخدام الدالة application() لحساب القيمة المتوسطة في عمود “النقاط”:
#attempt to calculate mean of 'points' column
apply(df$points, 2, mean)
Error in apply(df$points, 2, mean): dim(X) must have a positive length
يحدث خطأ لأن الدالة application() تحتاج إلى تطبيقها على إطار بيانات أو مصفوفة، ولكن في هذا المثال نحاول تطبيقها على عمود معين في إطار البيانات.
كيفية اصلاح الخطأ
طريقة إصلاح هذا الخطأ هي ببساطة تقديم اسم إطار البيانات إلى الدالة application() كما يلي:
#calculate mean of every column in data frame
apply(df, 2, mean)
points rebound blocks
92,625 32,375 8,375
من المخرجات، يمكننا رؤية متوسط قيمة كل عمود في إطار البيانات. على سبيل المثال، متوسط قيمة عمود “النقاط” هو 92,625 .
يمكننا أيضًا استخدام هذه الوظيفة للعثور فقط على متوسط القيم المحددة في إطار البيانات:
#calculate mean of 'points' and 'blocks' column in data frame
apply(df[c(' points ', ' blocks ')], 2, mean)
point blocks
92,625 8,375
أخيرًا، إذا أردنا إيجاد متوسط عمود واحد، فيمكننا استخدام الدالة Mean() دون استخدام الدالة application() على الإطلاق:
#calculate mean of 'points' column
mean(df$points)
[1] 92,625
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية حل الأخطاء الشائعة الأخرى في R:
كيفية الإصلاح في R: الأسماء لا تتطابق مع الأسماء السابقة
كيفية الإصلاح في R: طول الكائن الأطول ليس مضاعفًا لطول الكائن الأقصر
كيفية الإصلاح في R: لا يمكن تطبيق التباينات إلا على العوامل ذات المستويين أو أكثر