해결 방법: fun(newx[, i], …) 오류: 인수 유형 '(문자)


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

 Error in sum(x): invalid 'type' (character) of argument

이 오류는 문자형 벡터에 수학 연산(예: 합계, 평균, 숫자 등)을 수행하려고 할 때 발생합니다.

이 튜토리얼에서는 실제로 이 오류를 해결하는 방법을 설명합니다.

오류를 재현하는 방법

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 points=c(10, 12, 15, 20, 26, 25),
                 rebounds=c(7, 8, 8, 14, 10, 12))

#view data frame
df

  team points rebounds
1 to 10 7
2 to 12 8
3 to 15 8
4 B 20 14
5 B 26 10
6 B 25 12

이제 “팀” 열의 합계를 계산한다고 가정해 보겠습니다.

 #attempt to calculate sum of values in 'team' column
sum(df$team)

Error in sum(df$team): invalid 'type' (character) of argument

“팀” 열이 문자 열이므로 오류가 발생합니다.

class() 함수를 사용하여 이를 확인할 수 있습니다.

 #view class of 'team' column
class(df$team)

[1] “character”

오류를 수정하는 방법

이 오류를 해결하는 방법은 숫자 벡터에 대한 수학 연산만 사용하는 것입니다.

예를 들어 sum() 함수를 사용하여 ‘points’ 열에 있는 값의 합계를 계산할 수 있습니다.

 #calculate sum of values in 'points' column
sum(df$points)

[1] 108

팀별로 그룹화된 포인트 값의 합계를 계산할 수도 있습니다.

 #calculate sum of points, grouped by team
aggregate(points ~ team, df, sum)

  team points
1 to 37
2 B 71

팀별로 그룹화하여 포인트 리바운드 값의 합계를 계산할 수도 있습니다.

 #calculate sum of points and sum of rebounds, grouped by team
aggregate(.~team, df, sum)

  team points rebounds
1 A 37 23
2 B 71 36

숫자 변수의 합만 계산하려고 하기 때문에 이러한 작업에서는 오류가 발생하지 않습니다.

추가 리소스

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

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

의견을 추가하다

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