The r error names do not match previous names message is mainly a question of dataset format. This problem can result from a coding error if you are creating each data frame from within your code. However, if you are using an outside source then the problem will be exclusive to those dataset sources. That does not necessarily mean that there is an error in multiple csv files or data sets, but only the presence of a mismatch of column names.
The circumstances of this error.
This problem occurs when using the rbind function. This function is used to combine multiple data frames. This problem shows up when combining multiple dataframes with different column names. It can also show up when combining a provided data frame with matrices because a matrix does not have column names, or a missing value in the character string for column names, depending on the base R version. When successful this base R version function allows you to create a single table made from multiple datasets. However, its proper use requires combining data frames with the same column names otherwise you will get our error message. That is the key to understanding this message and it is also the key to preventing and fixing it when it occurs.
What is causing this error?
The cause of this problem has nothing to do with row names, data type, variable type, or the character vector value that is contained in any part of the data frame.
# r error names do not match previous names > x = data.frame("A" = c(2,3,5,7), "B" = c(2,4,6,8), "C" = c(3,6,9,12)) > y = data.frame("A" = c(11,13,17,19), "B" = c(10,12,14,16), "C" = c(15,18,21,24)) > rbind(x,y) A B C 1 2 2 3 2 3 4 6 3 5 6 9 4 7 8 12 5 11 10 15 6 13 12 18 7 17 14 21 8 19 16 24
This example shows the ideal use of the rbind function, note that each provided data frame list has the same character vector column names. This fact allows the R object merge function to work properly in the given data frame file.
# names do not match previous names r error > x = data.frame("A" = c(2,3,5,7), "B" = c(2,4,6,8), "C" = c(3,6,9,12)) > y = data.frame("D" = c(11,13,17,19), "E" = c(10,12,14,16), "F" = c(15,18,21,24)) > rbind(x,y) Error in match.names(clabs, names(xi)) : names do not match previous names
In this example, one given data frame file has different column names than the other given data frame. As a result, we get our message instead of a returned data frame. Put simply this problem occurs when you are trying to combine R object datasets with mismatched column names.
How to fix this error.
If you have access to the dataset that you are working with then all you have to do is make sure that the multiple dataframes all have the same column names. If however, you are using an outside source you need to adjust your code argument object to fix this problem in the returned data frame.
# how to fix names do not match previous names error in r > x = data.frame("A" = c(2,3,5,7), "B" = c(2,4,6,8), "C" = c(3,6,9,12)) > y = data.frame("D" = c(11,13,17,19), "E" = c(10,12,14,16), "F" = c(15,18,21,24)) > y D E F 1 11 10 15 2 13 12 18 3 17 14 21 4 19 16 24 > colnames(y) = colnames(x) > y A B C 1 11 10 15 2 13 12 18 3 17 14 21 4 19 16 24 > rbind(x,y) A B C 1 2 2 3 2 3 4 6 3 5 6 9 4 7 8 12 5 11 10 15 6 13 12 18 7 17 14 21 8 19 16 24
In this example, the original dataframes have different column names and would produce our message if the colnames() function was not used to set dataframe y’s column names to those of dataframe x. This simple solution fixes the problem eliminating the message allowing your program to run as intended.
This is a programming problem that is easy to understand and just as easy to fix. In this case, the problem is a column name mismatch and the rbind() function cannot deal with this situation. The code needed to fix this problem is short and simple making for an easy fix.
Looking for more help with R errors? Check out these other great articles: