One common error you may encounter in R is:
Error in match.names(clabs, names(xi)) : names do not match previous names
This error occurs when you attempt to use the rbind() function to row bind two data frames, but the column names of the two data frames don’t match.
This tutorial shares the exact steps you can use to troubleshoot this error.
Example: How to Fix ‘names do not match previous names’
Suppose we have the following two data frames in R:
#create and view first data frame df1 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 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
If we attempt to use the rbind() function to row bind these two data frames, we’ll get an error:
#attempt to row bind the two data frames
rbind(df1, df2)
Error in match.names(clabs, names(xi)) :
names do not match previous names
We get this error because the column names of the two data frames don’t match.
The first data frame has the following column names:
- var1
- var2
And the second data frame has the following column names:
- var3
- var4
We can even use the following code to check whether the column names are identical between the two data frames:
#check if column names are identical between two data frames
identical(names(df1), names(df2))
[1] FALSE
We can see that the column names are not identical.
To fix this error, we can manually rename the column names of the second data frame to match the column names of the first data frame:
#define two data frames df1 frame(var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 frame(var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) 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
We can see that rbind() was able to successfully row bind the two data frames since the column names matched.
Another way to fix this error would be to use the names() function to automatically assign the column names of the first data frame to the second data frame:
#define two data frames df1 frame(var1=c(1, 3, 3, 4, 5), var2=c(7, 7, 8, 3, 2)) df2 frame(var3=c(3, 3, 6, 6, 8), var4=c(1, 1, 2, 8, 9)) #rename second data frame columns names(df2) #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
Once again, rbind() is able to row bind the two data frames successfully because they share the same column names.
Additional Resources
How to Use rbind in R (With Examples)
How to Use cbind in R (With Examples)
How to Append Rows to a Data Frame in R