본문 바로가기
R 주제/R 기초 및 통계 강의

[R강의] 163. 벡터 결측치의 위치를 알려주는 함수 만들기

by 만다린망고 2023. 8. 29.
반응형

아래와 같은 벡터가 있다고 합시다. 

v=c(NA,2,3,4,NA)


결측치 여부를 확인하는 것은 is.na 로 가능합니다. 

> is.na(v)
[1]  TRUE FALSE FALSE FALSE  TRUE


오늘 하고 싶은 것은 결측치의 위치를 출력해주는 함수를 만드는 것입니다. 위 벡터를 예로 들면 결측치의 위치인 1과 5를 출력해주는 것입니다. 

함수를 만들기 전에 먼저 하나의 벡터의 NA 위치를 출력해주는 코드를 짜봅시다. 아래와 같습니다. 

v=c(NA,2,3,4,NA)
res=c()

for (i in 1:length(v)){
  if (is.na(v[i])){
    res=append(res,i)
  }
}


v[i] 가 NA 인 경우에 i를 res에 추가하는 코드입니다. 예를들어 v[3]이 NA라면 3이 res에 추가됩니다. 세번째 원소가 NA이므로 3을 r추가하는 것입니다. res는 우리가 얻고싶은 결과값입니다. 위 예제에서는 res가 1,5가 되어야 합니다. 

위 코드를 실행한 뒤 res를 입력해보면 아래와 같이 우리가 원하는 대로 출력되는 것을 알 수 있습니다. 

> res
[1] 1 5


이제 함수로 만들어봅시다. 함수 이름은 where.na.vec로 했습니다. 

where.na.vec=function(v){
  
  res=c()
  
  for (i in 1:length(v)){
    if (is.na(v[i])){
      res=append(res,i)
    }
  }
  
  return(res)

}


함수를 사용해봅시다. 

> where.na.vec(v)
[1] 1 5


결과가 잘 출력됩니다. 다른 벡터를 하나 만들어서 한번 더 확인해봅시다. 

> v2=c(NA,NA,NA,4)
> where.na.vec(v2)
[1] 1 2 3

 

반응형

댓글