Hoe op te lossen in r: fout in rbind(deparse.level, …): argumentkolomnummers komen niet overeen
Een fout die je tegen kunt komen in R is:
Error in rbind(deparse.level, ...): numbers of columns of arguments do not match
Deze fout treedt op wanneer u probeert de functie rbind() in R te gebruiken om twee of meer gegevensframes die niet hetzelfde aantal kolommen hebben, aan elkaar te binden.
In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende twee dataframes in R hebben:
#create first data frame
df1 <- data. frame (x=c(1, 4, 4, 5, 3),
y=c(4, 4, 2, 8, 10))
df1
xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
#create second data frame
df2 <- data. frame (x=c(2, 2, 2, 5, 7),
y=c(3, 6, 2, 0, 0),
z=c(2, 7, 7, 8, 15))
df2
X Y Z
1 2 3 2
2 2 6 7
3 2 2 7
4 5 0 8
5 7 0 15
Stel nu dat we rbind proberen te gebruiken om deze twee dataframes in één enkel dataframe te binden:
#attempt to row-bind the two data frames together
rbind(df1, df2)
Error in rbind(deparse.level, ...):
numbers of columns of arguments do not match
We ontvangen een foutmelding omdat de twee gegevensframes niet hetzelfde aantal kolommen hebben.
Hoe u de fout kunt oplossen
Er zijn twee manieren om dit probleem op te lossen:
Methode 1: Gebruik rbind op algemene kolommen
Eén manier om dit probleem op te lossen is door de functie intersect() te gebruiken om gemeenschappelijke kolomnamen tussen dataframes te vinden, en vervolgens de dataframes alleen aan die kolommen te koppelen:
#find common column names
common <- intersect(colnames(df1), colnames(df2))
#row-bind only on common column names
df3 <- rbind(df1[common], df2[common])
#view result
df3
xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
6 2 3
7 2 6
8 2 2
9 5 0
10 7 0
Methode 2: Gebruik bind_rows() van dplyr
Een andere manier om dit probleem op te lossen is door de functie bind_rows() uit het dplyr- pakket te gebruiken, die automatisch NA-waarden invult voor niet-overeenkomende kolomnamen:
library (dplyr)
#bind together the two data frames
df3 <- bind_rows(df1, df2)
#view result
df3
X Y Z
1 1 4 NA
2 4 4 NA
3 4 2 NA
4 5 8 NA
5 3 10 NA
6 2 3 2
7 2 6 7
8 2 2 7
9 5 0 8
10 7 0 15
Merk op dat de NA-waarden zijn ingevuld voor de df1- waarden, aangezien de z- kolom niet bestond in dit dataframe.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:
Oplossing in R: namen komen niet overeen met eerdere namen
Hoe op te lossen in R: de lengte van een langer object is geen veelvoud van de lengte van een korter object
Hoe op te lossen in R: contrasten kunnen alleen worden toegepast op factoren met 2 of meer niveaus