Come risolvere in r: dim(x) deve avere una lunghezza positiva
Un errore che potresti riscontrare in R è:
Error in apply(df$var1, 2, mean): dim(X) must have a positive length
Questo errore si verifica quando si tenta di utilizzare la funzione apply() per calcolare una metrica per una colonna di un frame di dati o di una matrice, fornendo un vettore come argomento invece di un frame di dati o di una matrice.
Questo tutorial spiega esattamente come correggere questo errore.
Come riprodurre l’errore
Supponiamo di avere il seguente frame di dati in R:
#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
Supponiamo ora di provare a utilizzare la funzione apply() per calcolare il valore medio nella colonna “punti”:
#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
Si verifica un errore perché la funzione apply() deve essere applicata a un frame o matrice di dati, ma in questo esempio stiamo provando ad applicarla a una colonna specifica nel frame di dati.
Come correggere l’errore
Il modo per correggere questo errore è semplicemente fornire il nome del frame di dati alla funzione apply() come segue:
#calculate mean of every column in data frame
apply(df, 2, mean)
points rebound blocks
92,625 32,375 8,375
Dall’output, possiamo vedere il valore medio di ciascuna colonna nel frame di dati. Ad esempio, il valore medio della colonna “punti” è 92.625 .
Possiamo anche utilizzare questa funzione per trovare solo la media di valori specifici nel frame di dati:
#calculate mean of 'points' and 'blocks' column in data frame
apply(df[c(' points ', ' blocks ')], 2, mean)
point blocks
92,625 8,375
Infine, se vogliamo trovare la media di una singola colonna, possiamo utilizzare la funzione Mean() senza utilizzare affatto la funzione apply() :
#calculate mean of 'points' column
mean(df$points)
[1] 92,625
Risorse addizionali
I seguenti tutorial spiegano come risolvere altri errori comuni in R:
Come risolvere il problema in R: i nomi non corrispondono ai nomi precedenti
Come risolvere in R: la lunghezza di un oggetto più lungo non è un multiplo della lunghezza di un oggetto più corto
Come risolvere in R: i contrasti possono essere applicati solo a fattori con 2 o più livelli