R 수정 방법: rbind(deparse.level, …) 오류: 인수 열 번호가 일치하지 않습니다.


R에서 발생할 수 있는 오류는 다음과 같습니다.

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

이 오류는 R의 rbind() 함수를 사용하여 동일한 수의 열이 없는 두 개 이상의 데이터 프레임을 함께 바인딩하려고 할 때 발생합니다.

이 튜토리얼에서는 이 오류를 수정하는 방법을 정확하게 설명합니다.

오류를 재현하는 방법

R에 다음과 같은 두 개의 데이터 프레임이 있다고 가정합니다.

 #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

이제 rbind를 사용하여 이 두 데이터 프레임을 단일 데이터 프레임으로 바인딩한다고 가정합니다.

 #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

두 데이터 프레임의 열 수가 동일하지 않기 때문에 오류가 발생합니다.

오류를 수정하는 방법

이 문제를 해결하는 방법에는 두 가지가 있습니다.

방법 1: 공통 열에 rbind 사용

이 문제를 해결하는 한 가지 방법은 intersect() 함수를 사용하여 데이터 프레임 사이의 공통 열 이름을 찾은 다음 해당 열에서만 데이터 프레임을 연결하는 것입니다.

 #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

방법 2: dplyr에서 bind_rows() 사용

이 문제를 해결하는 또 다른 방법은 일치하지 않는 열 이름에 대해 NA 값을 자동으로 채우는 dplyr 패키지의 바인딩_rows() 함수를 사용하는 것입니다.

 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

이 데이터 프레임에는 z 열이 존재하지 않았기 때문에 df1 값에 대해 NA 값이 채워집니다.

추가 리소스

다음 튜토리얼에서는 R의 다른 일반적인 오류를 해결하는 방법을 설명합니다.

R에서 수정하는 방법: 이름이 이전 이름과 일치하지 않습니다.
R에서 수정하는 방법: 긴 물체의 길이가 더 짧은 물체 길이의 배수가 아닙니다.
R에서 수정하는 방법: 대비는 수준이 2개 이상인 요인에만 적용할 수 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다