R에서 수정하는 방법: 인수가 숫자도 아니고 논리도 아닙니다. return na


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

 Warning message:
In mean.default(df): argument is not numeric or logical: returning NA

이 경고는 R에서 숫자도 논리도 아닌 개체의 평균을 계산하려고 할 때 발생합니다.

이 튜토리얼에서는 실제로 이 경고를 처리하는 방법을 정확하게 설명합니다.

경고를 재현하는 방법

R에서 다음 데이터 프레임을 생성한다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                 points=c(99, 90, 86, 88, 95),
                 assists=c(33, 28, 31, 39, 34),
                 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

  team points assists rebounds
1 A 99 33 30
2 B 90 28 28
3 C 86 31 24
4 D 88 39 24
5 E 95 34 28

문자 열의 평균을 계산하거나 전체 데이터 프레임의 평균을 계산하려고 하면 다음과 같은 경고가 표시됩니다.

 #attempt to calculate mean of character column
mean(df$team)

Warning message:
In mean.default(df$team): argument is not numeric or logical: returning NA

#attempt to calculate mean of entire data frame
mean(df)

Warning message:
In mean.default(df): argument is not numeric or logical: returning NA

Mean() 함수는 숫자 벡터만 인수로 사용하므로 두 시나리오 모두에서 경고가 표시됩니다.

경고를 처리하는 방법

이 경고를 처리하는 방법은 숫자 벡터와 함께 Mean() 함수만 사용하는 것입니다.

예를 들어, 포인트 열은 숫자이므로 평균을 계산할 수 있습니다.

 #calculate mean of points column
mean(df$points)

[1] 91.6

또는 sapply() 함수를 사용하여 데이터 프레임의 각 열의 평균을 계산할 수 있습니다.

 #calculate mean of every column in data frame
sapply(df, mean, 2)

    team points assists rebounds 
      NA 90 33 28 

Warning message:
In mean.default(X[[i]], ...):
  argument is not numeric or logical: returning NA

각 숫자 열의 평균을 계산할 수 있지만 “팀” 문자 열의 평균을 계산하려고 시도했기 때문에 여전히 경고 메시지가 나타납니다.

이 경고를 완전히 방지하려면 세 개의 숫자 열만 사용하여 sapply() 함수를 사용할 수 있습니다.

 #calculate mean of each numeric column
sapply(df[c(' points ', ' assists ', ' rebounds ')], mean, 2)
  points assists rebounds 
      90 33 28

각 숫자 열의 평균이 성공적으로 표시되며 경고 메시지가 수신되지 않습니다.

추가 리소스

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

해결 방법: 조건의 길이가 1보다 크고 첫 번째 요소만 사용됩니다.
해결 방법: 이항 연산자의 숫자가 아닌 인수
해결 방법: 희미한(X) 길이는 양수여야 합니다.
해결 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.

의견을 추가하다

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