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