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