Як виправити помилку в 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
Ми отримуємо цю помилку, оскільки імена стовпців двох кадрів даних не збігаються.
Перший кадр даних має такі назви стовпців:
- var1
- var2
А другий кадр даних містить такі імена стовпців:
- var3
- var4
Ми навіть можемо використати наступний код, щоб перевірити, чи збігаються назви стовпців у двох фреймах даних:
#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() успішно пов’язав два кадри даних, оскільки назви стовпців збіглися.
Іншим способом виправлення цієї помилки є використання функції names() для автоматичного призначення імен стовпців із першого кадру даних другому кадру даних:
#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