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) 길이는 양수여야 합니다.
해결 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.