R에서 복구하는 방법: 이항 연산자의 숫자가 아닌 인수


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

 Error in df$var1- df$var2: non-numeric argument to binary operator 

이 오류는 두 벡터에 대해 이진 연산을 수행하려고 할 때 벡터 중 하나가 숫자가 아닐 때 발생합니다.

다음은 이진 연산의 예입니다.

  • 빼기 ( )
  • 덧셈( + )
  • 곱셈( * )
  • 구분 ( / )

이 오류는 제공한 벡터 중 하나가 문자형 벡터일 때 가장 자주 발생합니다.

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

오류를 재현하는 방법

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

 #create data frame
df <- data. frame (period = c(1, 2, 3, 4, 5, 6, 7, 8),
                 sales = c(14, 13, 10, 11, 19, 9, 8, 7),
                 returns = c('1', '0', '2', '1', '1', '2', '2', '3'))

#view data frame
df

  period sales returns
1 1 14 1
2 2 13 0
3 3 10 2
4 4 11 1
5 5 19 1
6 6 9 2
7 7 8 2
8 8 7 3

이제 “sales” 열에서 “returns” 열을 빼서 “net”이라는 새 열을 생성한다고 가정해 보겠습니다.

 #attempt to create new column called 'net'
df$net <- df$sales - df$returns

Error in df$sales * df$returns: non-numeric argument to binary operator

“반환” 열이 “문자” 클래스에 속하고 숫자 열에서 문자 열을 뺄 수 없기 때문에 오류가 발생합니다.

 #display class of 'sales' column
class(df$sales)

[1] "digital"

#display class of 'returns' column
class(df$returns)

[1] “character”

오류를 수정하는 방법

이 오류를 해결하는 방법은 빼기를 수행하기 전에 as.numeric()을 사용하여 “반환” 열을 숫자로 변환하는 것입니다.

 #create new column called 'net'
df$net <- df$sales - as. numeric (df$returns)

#view updated data frame
df

  period sales returns net
1 1 14 1 13
2 2 13 0 13
3 3 10 2 8
4 4 11 1 10
5 5 19 1 18
6 6 9 2 7
7 7 8 2 6
8 8 7 3 4

“sales”와 “returns” 열이 숫자이기 때문에 오류 없이 뺄셈을 수행할 수 있습니다.

추가 리소스

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

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

의견을 추가하다

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