Jak naprawić w r: błąd w rbind(deparse.level, …): numery kolumn argumentów nie pasują


Błąd, który możesz napotkać w R to:

 Error in rbind(deparse.level, ...): 
  numbers of columns of arguments do not match 

Ten błąd występuje, gdy próbujesz użyć funkcji rbind() w języku R do połączenia dwóch lub więcej ramek danych, które nie mają tej samej liczby kolumn.

W tym samouczku dokładnie wyjaśniono, jak naprawić ten błąd.

Jak odtworzyć błąd

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

 #create first data frame
df1 <- data. frame (x=c(1, 4, 4, 5, 3),
                  y=c(4, 4, 2, 8, 10))

df1

  xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10

#create second data frame
df2 <- data. frame (x=c(2, 2, 2, 5, 7),
                  y=c(3, 6, 2, 0, 0),
                  z=c(2, 7, 7, 8, 15))

df2

  X Y Z
1 2 3 2
2 2 6 7
3 2 2 7
4 5 0 8
5 7 0 15

Załóżmy teraz, że spróbujemy użyć rbind do powiązania tych dwóch ramek danych w jedną ramkę danych:

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

Error in rbind(deparse.level, ...): 
  numbers of columns of arguments do not match

Otrzymujemy błąd, ponieważ dwie ramki danych nie mają tej samej liczby kolumn.

Jak naprawić błąd

Istnieją dwa sposoby rozwiązania tego problemu:

Metoda 1: Użyj rbind na wspólnych kolumnach

Jednym ze sposobów rozwiązania tego problemu jest użycie funkcji intersect() w celu znalezienia wspólnych nazw kolumn między ramkami danych, a następnie połączenie ramek danych tylko w tych kolumnach:

 #find common column names
common <- intersect(colnames(df1), colnames(df2))

#row-bind only on common column names
df3 <- rbind(df1[common], df2[common])

#view result
df3

   xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
6 2 3
7 2 6
8 2 2
9 5 0
10 7 0

Metoda 2: Użyj funkcji bind_rows() z dplyr

Innym sposobem rozwiązania tego problemu jest użycie funkcji bind_rows() z pakietu dplyr , która automatycznie uzupełnia wartości NA w przypadku niedopasowanych nazw kolumn:

 library (dplyr)

#bind together the two data frames
df3 <- bind_rows(df1, df2)

#view result
df3

   X Y Z
1 1 4 NA
2 4 4 NA
3 4 2 NA
4 5 8 NA
5 3 10 NA
6 2 3 2
7 2 6 7
8 2 2 7
9 5 0 8
10 7 0 15

Należy zauważyć, że wartości NA są wypełniane dla wartości df1 , ponieważ kolumna z nie istniała w tej ramce danych.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak rozwiązać inne typowe błędy w języku R:

Jak naprawić w R: Nazwy nie pasują do poprzednich nazw
Jak naprawić w R: długość dłuższego obiektu nie jest wielokrotnością długości krótszego obiektu
Jak naprawić w R: kontrasty można zastosować tylko do czynników o 2 lub więcej poziomach

Dodaj komentarz

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