Jak naprawić błąd w r: nazwy nie pasują do poprzednich nazw


Typowym błędem, jaki możesz napotkać w R jest:

 Error in match.names(clabs, names(xi)): 
  names do not match previous names

Ten błąd występuje, gdy próbujesz użyć funkcji rbind() do powiązania dwóch ramek danych, ale nazwy kolumn w obu ramkach danych nie są zgodne.

W tym samouczku przedstawiono dokładne kroki, które można wykonać, aby rozwiązać ten błąd.

Przykład: Jak naprawić błąd „Nazwy nie pasują do poprzednich nazw”

Załóżmy, że mamy w R następujące dwie ramki danych:

 #create and view first data frame
df1 <- data. frame (var1=c(1, 3, 3, 4, 5),
                  var2=c(7, 7, 8, 3, 2))

df1

  var1 var2
1 1 7
2 3 7
3 3 8
4 4 3
5 5 2

#create and view first second frame 
df2 <- data. frame (var3=c(3, 3, 6, 6, 8),
                  var4=c(1, 1, 2, 8, 9))

df2

  var3 var4
1 3 1
2 3 1
3 6 2
4 6 8
5 8 9

Jeśli spróbujemy użyć funkcji rbind() do powiązania tych dwóch ramek danych, otrzymamy błąd:

 #attempt to row bind the two data frames
rbind(df1, df2)

Error in match.names(clabs, names(xi)): 
  names do not match previous names

Otrzymujemy ten błąd, ponieważ nazwy kolumn dwóch ramek danych nie są zgodne.

Pierwsza ramka danych ma następujące nazwy kolumn:

  • zm.1
  • zm2

Druga ramka danych zawiera następujące nazwy kolumn:

  • var3
  • var4

Możemy nawet użyć poniższego kodu, aby sprawdzić, czy nazwy kolumn w obu ramkach danych są takie same:

 #check if column names are identical between two data frames
identical(names(df1), names(df2))

[1] FALSE

Widzimy, że nazwy kolumn nie są takie same.

Aby naprawić ten błąd, możemy ręcznie zmienić nazwy kolumn w drugiej ramce danych, aby odpowiadały nazwom kolumn w pierwszej ramce danych:

 #define two data frames
df1 <- data. frame (var1=c(1, 3, 3, 4, 5),
                  var2=c(7, 7, 8, 3, 2))

df2 <- data. frame (var3=c(3, 3, 6, 6, 8),
                  var4=c(1, 1, 2, 8, 9))

#rename second data frame columns
names(df2) <- c(' var1 ', ' var2 ')

#row bind the two data frames
rbind(df1, df2)

   var1 var2
1 1 7
2 3 7
3 3 8
4 4 3
5 5 2
6 3 1
7 3 1
8 6 2
9 6 8
10 8 9

Widzimy, że rbind() pomyślnie powiązała dwie ramki danych, ponieważ nazwy kolumn były zgodne.

Innym sposobem naprawienia tego błędu byłoby użycie funkcji Names() w celu automatycznego przypisania nazw kolumn z pierwszej ramki danych do drugiej ramki danych:

 #define two data frames
df1 <- data. frame (var1=c(1, 3, 3, 4, 5),
                 var2=c(7, 7, 8, 3, 2))

df2 <- data. frame (var3=c(3, 3, 6, 6, 8),
                  var4=c(1, 1, 2, 8, 9))

#rename second data frame columns
names(df2) <- names(df1)

#row bind the two data frames
rbind(df1, df2)

   var1 var2
1 1 7
2 3 7
3 3 8
4 4 3
5 5 2
6 3 1
7 3 1
8 6 2
9 6 8
10 8 9

Ponownie rbind() może pomyślnie powiązać dwie ramki danych, ponieważ mają one te same nazwy kolumn.

Dodatkowe zasoby

Jak używać rbind w R (z przykładami)
Jak używać cbind w R (z przykładami)
Jak dodać wiersze do ramki danych w R

Dodaj komentarz

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