كيفية إصلاح الخطأ في r: الأسماء لا تتطابق مع الأسماء السابقة
الخطأ الشائع الذي قد تواجهه في R هو:
Error in match.names(clabs, names(xi)): names do not match previous names
يحدث هذا الخطأ عند محاولة استخدام الدالة rbind() لربط إطاري بيانات، ولكن أسماء الأعمدة الخاصة بإطاري البيانات غير متطابقة.
يشارك هذا البرنامج التعليمي الخطوات الدقيقة التي يمكنك استخدامها لحل هذا الخطأ.
مثال: كيفية إصلاح “الأسماء لا تتطابق مع الأسماء السابقة”
لنفترض أن لدينا إطاري البيانات التاليين في R:
#create and view first data frame df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df1 var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 #create and view first second frame df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) df2 var3 var4 1 3 1 2 3 1 3 6 2 4 6 8 5 8 9
إذا حاولنا استخدام الدالة rbind() لربط إطاري البيانات هذين، فسوف نحصل على خطأ:
#attempt to row bind the two data frames
rbind(df1, df2)
Error in match.names(clabs, names(xi)):
names do not match previous names
لقد حصلنا على هذا الخطأ لأن أسماء الأعمدة لإطاري البيانات غير متطابقة.
يحتوي إطار البيانات الأول على أسماء الأعمدة التالية:
- فار1
- var2
ويحتوي إطار البيانات الثاني على أسماء الأعمدة التالية:
- فار3
- فار4
يمكننا أيضًا استخدام الكود التالي للتحقق مما إذا كانت أسماء الأعمدة هي نفسها بين إطاري البيانات:
#check if column names are identical between two data frames
identical(names(df1), names(df2))
[1] FALSE
يمكننا أن نرى أن أسماء الأعمدة ليست هي نفسها.
لإصلاح هذا الخطأ، يمكننا إعادة تسمية أسماء الأعمدة يدويًا في إطار البيانات الثاني لتتناسب مع أسماء الأعمدة في إطار البيانات الأول:
#define two data frames df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) <- c(' var1 ', ' var2 ') #row bind the two data frames rbind(df1, df2) var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 6 3 1 7 3 1 8 6 2 9 6 8 10 8 9
يمكننا أن نرى أن rbind() نجح في ربط إطاري البيانات منذ تطابق أسماء الأعمدة.
هناك طريقة أخرى لإصلاح هذا الخطأ وهي استخدام وظيفة الأسماء () لتعيين أسماء الأعمدة تلقائيًا من إطار البيانات الأول إلى إطار البيانات الثاني:
#define two data frames df1 <- data. frame (var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 <- data. frame (var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) <- names(df1) #row bind the two data frames rbind(df1, df2) var1 var2 1 1 7 2 3 7 3 3 8 4 4 3 5 5 2 6 3 1 7 3 1 8 6 2 9 6 8 10 8 9
مرة أخرى، rbind() قادر على ربط إطاري البيانات بنجاح لأنهما يشتركان في نفس أسماء الأعمدة.
مصادر إضافية
كيفية استخدام rbind في R (مع أمثلة)
كيفية استخدام cbind في R (مع أمثلة)
كيفية إضافة صفوف إلى إطار البيانات في R