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

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *