Hoe op te lossen in r: dim(x) moet een positieve lengte hebben
Een fout die je tegen kunt komen in R is:
Error in apply(df$var1, 2, mean): dim(X) must have a positive length
Deze fout treedt op wanneer u probeert de functie apply() te gebruiken om een metriek te berekenen voor een kolom van een dataframe of matrix, terwijl u een vector als argument opgeeft in plaats van een dataframe of een matrix.
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 (points=c(99, 97, 104, 79, 84, 88, 91, 99),
rebounds=c(34, 40, 41, 38, 29, 30, 22, 25),
blocks=c(12, 8, 8, 7, 8, 11, 6, 7))
#view data frame
df
points rebound blocks
1 99 34 12
2 97 40 8
3 104 41 8
4 79 38 7
5 84 29 8
6 88 30 11
7 91 22 6
8 99 25 7
Stel nu dat we de functie apply() proberen te gebruiken om de gemiddelde waarde in de kolom „punten“ te berekenen:
#attempt to calculate mean of 'points' column
apply(df$points, 2, mean)
Error in apply(df$points, 2, mean): dim(X) must have a positive length
Er treedt een fout op omdat de functie apply() moet worden toegepast op een dataframe of matrix, maar in dit voorbeeld proberen we deze toe te passen op een specifieke kolom in het dataframe.
Hoe u de fout kunt oplossen
De manier om deze fout op te lossen is door eenvoudigweg de naam van het dataframe als volgt aan de functie apply() op te geven:
#calculate mean of every column in data frame
apply(df, 2, mean)
points rebound blocks
92,625 32,375 8,375
Uit de uitvoer kunnen we de gemiddelde waarde van elke kolom in het dataframe zien. De gemiddelde waarde van de kolom “punten” is bijvoorbeeld 92.625 .
We kunnen deze functie ook gebruiken om alleen het gemiddelde van specifieke waarden in het dataframe te vinden:
#calculate mean of 'points' and 'blocks' column in data frame
apply(df[c(' points ', ' blocks ')], 2, mean)
point blocks
92,625 8,375
Als we ten slotte het gemiddelde van een enkele kolom willen vinden, kunnen we de functie Mean() gebruiken zonder de functie apply() te gebruiken:
#calculate mean of 'points' column
mean(df$points)
[1] 92,625
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