Fout in r oplossen: namen komen niet overeen met eerdere namen


Een veel voorkomende fout die u in R kunt tegenkomen is:

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

Deze fout treedt op wanneer u probeert de functie rbind() te gebruiken om twee gegevensframes te binden, maar de kolomnamen van de twee gegevensframes komen niet overeen.

In deze zelfstudie worden de exacte stappen beschreven die u kunt gebruiken om deze fout op te lossen.

Voorbeeld: Hoe u “namen komen niet overeen met eerdere namen” kunt oplossen

Stel dat we de volgende twee dataframes in R hebben:

 #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

Als we de functie rbind() proberen te gebruiken om deze twee dataframes te binden, krijgen we een foutmelding:

 #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 krijgen deze foutmelding omdat de kolomnamen van de twee gegevensframes niet overeenkomen.

Het eerste dataframe heeft de volgende kolomnamen:

  • var1
  • var2

En het tweede dataframe bevat de volgende kolomnamen:

  • var3
  • var4

We kunnen zelfs de volgende code gebruiken om te controleren of de kolomnamen hetzelfde zijn tussen de twee dataframes:

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

[1] FALSE

We kunnen zien dat de kolomnamen niet hetzelfde zijn.

Om deze fout te verhelpen, kunnen we de kolomnamen in het tweede dataframe handmatig hernoemen, zodat deze overeenkomen met de kolomnamen in het eerste dataframe:

 #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

We kunnen zien dat rbind() de twee dataframes met succes heeft gekoppeld, omdat de kolomnamen overeenkwamen.

Een andere manier om deze fout op te lossen is door de functie name() te gebruiken om automatisch de kolomnamen van het eerste dataframe aan het tweede dataframe toe te wijzen:

 #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

Nogmaals, rbind() kan de twee dataframes met succes binden omdat ze dezelfde kolomnamen delen.

Aanvullende bronnen

Hoe rbind in R te gebruiken (met voorbeelden)
Hoe cbind in R te gebruiken (met voorbeelden)
Rijen toevoegen aan een dataframe in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert