Hoe op te lossen in r: fout in aggregate.data.frame(): argumenten moeten dezelfde lengte hebben


Een fout die je tegen kunt komen in R is:

 Error in aggregate.data.frame(as.data.frame(x), ...): 
  arguments must have same length 

Deze fout treedt op wanneer u probeert de functie Aggregate() te gebruiken om de waarden in een of meer kolommen van een dataframe in R samen te vatten, maar u de naam van het dataframe niet kunt opgeven bij het verwijzen naar de kolommen.

In deze tutorial wordt precies uitgelegd hoe u deze fout kunt oplossen.

Hoe de fout te reproduceren

Stel dat we het volgende dataframe in R hebben:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'C', 'C'),
                 points=c(5, 9, 12, 14, 14, 13, 10, 6, 15, 18))

#view data frame
df

   team points
1 to 5
2 to 9
3 to 12
4 to 14
5 to 14
6 B 13
7 B 10
8 B 6
9 C 15
10 C 18

Stel nu dat we de functie Aggregate() proberen te gebruiken om de gemiddelde puntwaarde te berekenen, gegroepeerd per team :

 #attempt to calculate mean points value by team
aggregate(df$points, list(' team '), FUN=mean)

Error in aggregate.data.frame(as.data.frame(x), ...): 
  arguments must have same length

We ontvangen een foutmelding omdat we er niet in zijn geslaagd de naam van het gegevensblok op te geven in het argument list() .

Hoe u de fout kunt oplossen

De manier om deze fout op te lossen is door simpelweg df$team te gebruiken in plaats van alleen maar „team“ in het list() argument:

 #calculate mean points value by team
aggregate(df$points, list(df$team), FUN=mean)

  Group.1 x
1 A 10.800000
2 B 9.666667
3 C 16.500000

Houd er rekening mee dat we deze keer geen fouten ontvangen omdat we de dataframenaam hebben opgegeven in het argument list() .

Houd er rekening mee dat als u meerdere kolomnamen gebruikt in het list()- argument, u voor elke kolomnaam de dataframenaam moet opgeven, anders krijgt u een foutmelding.

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

Einen Kommentar hinzufügen

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