Como corrigir erro em r: os nomes não correspondem aos nomes anteriores


Um erro comum que você pode encontrar em R é:

 Error in match.names(clabs, names(xi)): 
  names do not match previous names

Este erro ocorre quando você tenta usar a função rbind() para vincular dois quadros de dados, mas os nomes das colunas dos dois quadros de dados não correspondem.

Este tutorial compartilha as etapas exatas que você pode usar para resolver esse erro.

Exemplo: Como corrigir “nomes não correspondem aos nomes anteriores”

Suponha que temos os dois quadros de dados a seguir em 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

Se tentarmos usar a função rbind() para vincular esses dois quadros de dados, obteremos um erro:

 #attempt to row bind the two data frames
rbind(df1, df2)

Error in match.names(clabs, names(xi)): 
  names do not match previous names

Recebemos esse erro porque os nomes das colunas dos dois quadros de dados não correspondem.

O primeiro quadro de dados possui os seguintes nomes de colunas:

  • var1
  • var2

E o segundo quadro de dados contém os seguintes nomes de colunas:

  • var3
  • var4

Podemos até usar o seguinte código para verificar se os nomes das colunas são iguais entre os dois quadros de dados:

 #check if column names are identical between two data frames
identical(names(df1), names(df2))

[1] FALSE

Podemos ver que os nomes das colunas não são iguais.

Para corrigir esse erro, podemos renomear manualmente os nomes das colunas no segundo quadro de dados para corresponder aos nomes das colunas no primeiro quadro de dados:

 #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

Podemos ver que rbind() vinculou com sucesso os dois quadros de dados, pois os nomes das colunas correspondiam.

Outra maneira de corrigir esse erro seria usar a funçãonames () para atribuir automaticamente os nomes das colunas do primeiro quadro de dados ao segundo quadro de dados:

 #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

Novamente, rbind() é capaz de vincular com êxito os dois quadros de dados porque eles compartilham os mesmos nomes de coluna.

Recursos adicionais

Como usar o rbind em R (com exemplos)
Como usar cbind em R (com exemplos)
Como adicionar linhas a um quadro de dados em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *