Как исправить ошибку в 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
  • вар2

А второй фрейм данных содержит следующие имена столбцов:

  • вар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() успешно связал два фрейма данных, поскольку имена столбцов совпали.

Другой способ исправить эту ошибку — использовать функцию 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *