Jak rozwiązać problem: spróbuj ustawić „nazwy kolumn”; na obiekcie mającym mniej niż dwa wymiary
Komunikat o błędzie, który możesz napotkać podczas korzystania z R, to:
Error in `colnames<-`(`*tmp*`, value = c("var1", "var2", "var3")): attempt to set 'colnames' on an object with less than two dimensions
Ten błąd zwykle występuje, gdy próbujesz użyć funkcji colnames() do ustawienia nazw kolumn w obiekcie, który nie jest ramką danych ani macierzą.
Poniższy przykład pokazuje, jak w praktyce rozwiązać ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą ramkę danych w 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
Załóżmy teraz, że próbujemy dodać nową linię na końcu ramki danych:
#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
Otrzymujemy błąd, ponieważ użyliśmy funkcji colnames() na wektorze zamiast na ramce danych lub macierzy.
Jak naprawić błąd
Aby uniknąć tego błędu, musimy upewnić się, że używamy funkcji colnames() z ramką danych:
Na przykład możemy użyć poniższego kodu, aby dodać nową linię na końcu ramki danych
#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
Tym razem nie otrzymaliśmy żadnych błędów, ponieważ użyliśmy funkcji colnames() do ustawienia nazw kolumn ramki danych zamiast wektora.
Następnie możemy z powodzeniem użyć rbind() do powiązania znaku nowej linii z końcem istniejącej ramki danych.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:
Jak naprawić w R: argumenty obejmują różną liczbę linii
Jak naprawić w R: błąd w wyborze nieużywanych argumentów
Jak naprawić w R: wymiana ma zerową długość