如何修复 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()成功链接了两个数据框,因为列名匹配。
修复此错误的另一种方法是使用名称()函数自动将第一个数据帧中的列名称分配给第二个数据帧:
#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()能够成功绑定两个数据框,因为它们共享相同的列名。
其他资源
如何在 R 中使用 rbind(附示例)
如何在 R 中使用 cbind(带有示例)
如何在 R 中向数据框添加行