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ść

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *