Comment corriger l’erreur dans R : les noms ne correspondent pas aux noms précédents



Une erreur courante que vous pouvez rencontrer dans R est :

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

Cette erreur se produit lorsque vous tentez d’utiliser la fonction rbind() pour lier deux blocs de données, mais que les noms de colonnes des deux blocs de données ne correspondent pas.

Ce didacticiel partage les étapes exactes que vous pouvez utiliser pour résoudre cette erreur.

Exemple : Comment réparer « les noms ne correspondent pas aux noms précédents »

Supposons que nous ayons les deux trames de données suivantes dans 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

Si nous essayons d’utiliser la fonction rbind() pour lier ces deux trames de données, nous obtiendrons une erreur :

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

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

Nous obtenons cette erreur car les noms de colonnes des deux blocs de données ne correspondent pas.

Le premier bloc de données comporte les noms de colonnes suivants :

  • var1
  • var2

Et le deuxième bloc de données contient les noms de colonnes suivants :

  • var3
  • var4

Nous pouvons même utiliser le code suivant pour vérifier si les noms de colonnes sont identiques entre les deux trames de données :

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

[1] FALSE

Nous pouvons voir que les noms de colonnes ne sont pas identiques.

Pour corriger cette erreur, nous pouvons renommer manuellement les noms de colonnes du deuxième bloc de données pour qu’ils correspondent aux noms de colonnes du premier bloc de données :

#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

Nous pouvons voir que rbind() a réussi à lier les deux trames de données puisque les noms de colonnes correspondaient.

Une autre façon de corriger cette erreur serait d’utiliser la fonction names() pour attribuer automatiquement les noms de colonnes du premier bloc de données au deuxième bloc de données :

#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

Encore une fois, rbind() est capable de lier avec succès les deux trames de données car elles partagent les mêmes noms de colonnes.

Ressources additionnelles

Comment utiliser rbind dans R (avec exemples)
Comment utiliser cbind dans R (avec exemples)
Comment ajouter des lignes à un bloc de données dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *