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