كيفية الإصلاح: خطأ في fun(newx[, i], …): نوع الوسيطة '(حرف)
الخطأ الذي قد تواجهه في R هو:
Error in sum(x): invalid 'type' (character) of argument
يحدث هذا الخطأ عند محاولة إجراء عملية حسابية (مثل جمع المجموع أو المتوسط أو العدد وما إلى ذلك) على متجه الأحرف.
يشرح هذا البرنامج التعليمي كيفية حل هذا الخطأ عمليًا.
كيفية إعادة إنتاج الخطأ
لنفترض أننا أنشأنا إطار البيانات التالي في R:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
points=c(10, 12, 15, 20, 26, 25),
rebounds=c(7, 8, 8, 14, 10, 12))
#view data frame
df
team points rebounds
1 to 10 7
2 to 12 8
3 to 15 8
4 B 20 14
5 B 26 10
6 B 25 12
لنفترض الآن أننا نحاول حساب مجموع عمود “الفريق”:
#attempt to calculate sum of values in 'team' column
sum(df$team)
Error in sum(df$team): invalid 'type' (character) of argument
لقد تلقينا خطأ لأن عمود “الفريق” عبارة عن عمود أحرف.
يمكننا تأكيد ذلك باستخدام الدالة class() :
#view class of 'team' column
class(df$team)
[1] “character”
كيفية اصلاح الخطأ
طريقة التغلب على هذا الخطأ هي استخدام العمليات الرياضية مع المتجهات الرقمية فقط.
على سبيل المثال، يمكننا استخدام الدالة sum() لحساب مجموع القيم في عمود “النقاط”:
#calculate sum of values in 'points' column
sum(df$points)
[1] 108
يمكننا أيضًا حساب مجموع قيم النقاط، مجمعة حسب الفريق:
#calculate sum of points, grouped by team
aggregate(points ~ team, df, sum)
team points
1 to 37
2 B 71
يمكننا أيضًا حساب مجموع النقاط وقيم الكرات المرتدة، مجمعة حسب الفريق:
#calculate sum of points and sum of rebounds, grouped by team
aggregate(.~team, df, sum)
team points rebounds
1 A 37 23
2 B 71 36
لاحظ أننا لا نتلقى خطأ في أي من هذه العمليات لأننا نحاول فقط حساب مجموع المتغيرات الرقمية.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية إصلاح الأخطاء الشائعة الأخرى في R:
كيفية الإصلاح: الشرط له طول > 1 وسيتم استخدام العنصر الأول فقط
كيفية الإصلاح: الوسيطة غير الرقمية للمشغل الثنائي
كيفية الإصلاح: يجب أن يكون لـ dim(X) طول موجب
كيفية الإصلاح: خطأ في اختيار الوسائط غير المستخدمة