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입니다.

의견을 추가하다

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