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