كيفية الإصلاح في r: الاستبدال به صفوف x، والبيانات بها y


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

 Error in `$<-.data.frame`(`*tmp*`, conf_full, value = c("West", "West",: 
  replacement has 3 rows, data has 5

يحدث هذا الخطأ عند محاولة إضافة عمود جديد إلى إطار بيانات تعتمد قيمه على عمود موجود، ولكن يتعذر إنشاء العمود الجديد أولاً.

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

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

لنفترض أننا أنشأنا إطار البيانات التالي في R:

 #create data frame
df <- data. frame (conference=c('W', 'W', 'W', 'E', 'E'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34))	

#view data frame
df

  conference points assists
1 W 99 33
2 W 90 28
3 W 86 31
4 E 88 39
5 E 95 34

لنفترض الآن أننا نحاول إضافة عمود جديد إلى إطار البيانات المسمى conf_full :

 #attempt to create new column based on conference name
df$conf_full[which(df$conference==' W ')] <- ' West '
df$conf_full[which(df$conference==' E ')] <- ' East '

Error in `$<-.data.frame`(`*tmp*`, conf_full, value = c("West", "West",: 
  replacement has 3 rows, data has 5

نتلقى خطأ لأن اسم المتغير conf_full غير موجود بعد، مما يعني أننا لا نستطيع تخصيص قيم لهذا العمود بعد.

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

لتجنب هذا الخطأ، يمكننا أولاً إنشاء المتغير conf_full وتخصيص قيم NA له ببساطة:

 #create conf_full variable
df$conf_full <- NA

الآن بعد أن أصبح المتغير موجودًا، يمكننا تعيين قيم له:

 #create new column based on conference
df$conf_full[which(df$conference==' W ')] <- ' West '
df$conf_full[which(df$conference==' E ')] <- ' East '

#view updated data frame
df

  conference points assists conf_full
1 W 99 33 West
2 W 90 28 West
3 W 86 31 West
4 E 88 39 East
5 E 95 34 East

لاحظ أننا لا نتلقى أي أخطاء هذه المرة لأننا أنشأنا المتغير conf_full أولاً قبل محاولة تعيين قيم له.

مصادر إضافية

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

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

Add a Comment

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