R에서 수정하는 방법: 유효하지 않은 요인 수준, na 생성
R을 사용할 때 나타날 수 있는 경고 메시지는 다음과 같습니다.
Warning message: In `[<-.factor`(`*tmp*`, iseq, value = "C"): invalid factor level, NA generated
이 경고는 정의된 수준으로 아직 존재하지 않는 R의 요인 변수에 값을 추가하려고 할 때 발생합니다.
다음 예에서는 실제로 이 경고에 대응하는 방법을 보여줍니다.
경고를 재현하는 방법
R에 다음과 같은 데이터 프레임이 있다고 가정합니다.
#create data frame
df <- data. frame (team=factor(c('A', 'A', 'B', 'B', 'B')),
dots=c(99, 90, 86, 88, 95))
#view data frame
df
team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
#view structure of data frame
str(df)
'data.frame': 5 obs. of 2 variables:
$ team: Factor w/ 2 levels "A","B": 1 1 2 2 2
$ points: num 99 90 86 88 95
팀 변수는 “A”와 “B”라는 두 가지 수준의 요인임을 알 수 있습니다.
이제 팀 의 “C” 값을 사용하여 데이터 프레임 끝에 새 줄을 추가 하려고 한다고 가정합니다.
#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)
Warning message:
In `[<-.factor`(`*tmp*`, iseq, value = "C"):
invalid factor level, NA generated
“C” 값이 아직 팀 변수의 요인 수준으로 존재하지 않기 때문에 경고 메시지가 나타납니다.
이는 단지 경고 메시지일 뿐이며 R은 여전히 데이터 프레임 끝에 줄바꿈을 추가하지만 ‘C’ 대신 NA 값을 사용한다는 점을 기억하는 것이 중요합니다.
#view updated data frame
df
team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 NA 100
경고를 피하는 방법
잘못된 요인 수준 경고를 방지하려면 먼저 요인 변수를 문자 변수로 변환한 다음 새 줄을 추가한 후 다시 요인 변수로 변환할 수 있습니다.
#convert team variable to character
df$team <- as. character (df$team)
#add new row to end of data frame
df[nrow(df) + 1,] = c('C', 100)
#convert team variable back to factor
df$team <- as. factor (df$team)
#view updated data frame
df
team points
1 to 99
2 to 90
3 B 86
4 B 88
5 B 95
6 C 100
데이터 프레임 끝에 개행 문자를 성공적으로 추가하고 경고 메시지를 피하는 데 성공했습니다.
또한 “C” 값이 팀 변수에 요인 수준으로 추가되었는지 확인할 수도 있습니다.
#view structure of updated data frame
str(df)
'data.frame': 6 obs. of 2 variables:
$ team: Factor w/ 3 levels "A","B","C": 1 1 2 2 2 3
$points: chr "99" "90" "86" "88" ...
추가 리소스
다음 튜토리얼에서는 R의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
R에서 수정하는 방법: 인수에 다른 줄 수가 포함됩니다.
R에서 수정하는 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.
R에서 복구하는 방법: 교체 길이가 0입니다.