R에서 수정하는 방법: 아래 첨자 할당에서는 누락된 값이 허용되지 않습니다.
R을 사용할 때 발생할 수 있는 오류 메시지는 다음과 같습니다.
Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, : missing values are not allowed in subscripted assignments of data frames
이 오류는 일반적으로 다른 열의 값을 사용하여 한 열에 값을 할당하려고 시도했지만 NA 값이 존재할 때 발생합니다.
다음 예에서는 실제로 이 오류를 해결하는 방법을 보여줍니다.
오류를 재현하는 방법
R에서 다음 데이터 프레임을 생성한다고 가정합니다.
#create data frame
df <- data. frame (A=c(3, 4, 4, NA, 5, 8, 5, 9),
B=c(12, 13, 7, 7, 12, 11, 15, 7))
#view data frame
df
AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 12
6 8 11
7 5 15
8 9 7
이제 A열의 해당 값이 5인 B열의 각 행에 값 10을 할당하려고 한다고 가정합니다.
#attempt to assign column B a value of 10 where A is equal to 5
df[df$A == 5, ]$B <- 10
Error in `[<-.data.frame`(`*tmp*`, df$A == 5, , value = list(A = c(NA, :
missing values are not allowed in subscripted assignments of data frames
A 열에 NA 값이 있기 때문에 오류가 발생하며 오류 메시지는 데이터 프레임의 첨자 할당에 누락된 값이 허용되지 않음을 명시적으로 알려줍니다.
오류를 피하는 방법
이 오류를 방지하는 방법에는 두 가지가 있습니다.
1. %in% 연산자를 사용하세요
이 오류를 방지하는 한 가지 방법은 할당을 수행할 때 %in% 연산자를 사용하는 것입니다.
#assign column B a value of 10 where A is equal to 5 df[df$A %in% 5,]$B <- 10 #view updated data frame df AB 1 3 12 2 4 13 3 4 7 4 NA 7 5 5 10 6 8 11 7 5 10 8 9 7
A열의 해당 값이 5인 B열의 각 행에 값 10이 할당되었으며 오류가 발생하지 않습니다.
2. is.na()를 사용하세요
이 오류를 방지하는 또 다른 방법은 할당을 수행할 때 is.na() 함수를 사용하는 것입니다.
#assign column B a value of 10 where A is equal to 5
df[!is. na (df$A) & df$A == 5, ]$B <- 10
#view updated data frame
df
AB
1 3 12
2 4 13
3 4 7
4 NA 7
5 5 10
6 8 11
7 5 10
8 9 7
이번에도 A열의 해당 값이 5인 B열의 각 행에 10의 값을 할당하면 오류가 발생하지 않습니다.
추가 리소스
다음 튜토리얼에서는 R의 다른 일반적인 오류를 수정하는 방법을 설명합니다.
R에서 수정하는 방법: 인수에 다른 줄 수가 포함됩니다.
R에서 수정하는 방법: 사용하지 않는 인수를 선택하는 중 오류가 발생했습니다.
R에서 복구하는 방법: 교체 길이가 0입니다.