Come risolvere il problema: prova a impostare "nomi colonne"; su un oggetto con meno di due dimensioni


Un messaggio di errore che potresti riscontrare quando usi R è:

 Error in `colnames<-`(`*tmp*`, value = c("var1", "var2", "var3")): 
  attempt to set 'colnames' on an object with less than two dimensions

Questo errore si verifica in genere quando si tenta di utilizzare la funzione colnames() per impostare i nomi di colonna su un oggetto che non è un frame di dati o una matrice.

L’esempio seguente mostra come risolvere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di avere il seguente frame di dati in R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'C', 'B', 'C', 'B', 'B', 'C', 'A'),
                 points=c(12, 8, 26, 25, 38, 30, 24, 24, 15),
                 rebounds=c(10, 4, 5, 5, 4, 3, 8, 18, 22))

#view data frame
df

  team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22

Supponiamo ora di provare ad aggiungere una nuova riga alla fine del frame di dati:

 #define new row to add to end of data frame
new_row <- c('D', 15, 11)

#attempt to define column names for new row
colnames(new_row) <- colnames(df)

Error in `colnames<-`(`*tmp*`, value = c("team", "points", "rebounds")): 
  attempt to set 'colnames' on an object with less than two dimensions

Stiamo ricevendo un errore perché abbiamo utilizzato la funzione colnames() su un vettore anziché su un dataframe o una matrice.

Come correggere l’errore

Per evitare questo errore, dobbiamo assicurarci di utilizzare la funzione colnames() con un frame di dati:

Ad esempio, possiamo utilizzare il codice seguente per aggiungere una nuova riga alla fine del frame di dati

 #define new row to add to end of data frame
new_row <- data. frame ('D', 15, 11)

#define column names for new row
colnames(new_row) <- colnames(df)

#add new row to end of data frame
df <- rbind(df, new_row)

#view updated data frame
df

   team points rebounds
1 to 12 10
2 to 8 4
3 C 26 5
4 B 25 5
5 C 38 4
6 B 30 3
7 B 24 8
8 C 24 18
9 to 15 22
10 D 15 11

Questa volta non riceviamo alcun errore perché abbiamo utilizzato la funzione colnames() per impostare i nomi delle colonne di un frame di dati anziché di un vettore.

Possiamo quindi utilizzare con successo rbind() per associare il ritorno a capo alla fine del frame di dati esistente.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in R:

Come risolvere in R: gli argomenti coinvolgono un numero diverso di righe
Come risolvere in R: errore nella selezione di argomenti inutilizzati
Come riparare in R: la sostituzione ha lunghezza zero

Aggiungi un commento

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