如何修复 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 中向数据框添加行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注