Як виправити помилку в 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *