[R] 최솟값 찾는 사용자 함수 생성 (min 함수 사용 X)

find-minimum-value-in-r

해당 포스트는 R에서 최솟값을 찾아주는 사용자 함수를 작성하는 방법을 소개합니다.

INTRO

R은 오픈소스 기반의 언어로, 공개된 커뮤니티에서 다양한 패키지들이 생성 및 공유되고 있습니다. 지금 이순간에도 새로운 패키지들이 생성되고 있으며, 개인적으로 이러한 패키지들을 잘 찾고 활용하는 것도 하나의 필수 스킬이라고 생각합니다.

이번 포스트에서는 최솟값을 찾아주는 min() 함수를 사용하지 않고 벡터 내 최솟값을 찾아주는 사용자 함수를 생성하는 방법을 설명합니다.

사용자 함수 만들기

R 내장 함수인 min() 함수를 사용하지 않고 최솟값을 찾는 방법 중 하나는 정렬(sort)을 이용하는 것입니다. 입력받은 벡터를 오름차순(incresing sort)으로 정렬하고 첫번째 값을 추출하는 방법으로, R에서는 내장 함수인 order() 를 사용하면 됩니다.

아래 코드는 최솟값을 찾아주는 사용자 함수 find_minimum_value()를 생성하는 코드로 각 라인의 설명은 아래와 같습니다.


  • vlist : 최솟값을 탐색이 필요한 입력 벡터
  • vlist_order : 입력받은 vlist를 오름차순 정렬하여 저장한 벡터
  • result : 오름차순 정렬된 vlist_order에서 첫번째 값을 추출하여 저장한 벡터

find_minimum_value <- function(vlist) {

  vlist_order <- vlist[order(vlist, decreasing = FALSE)]
  result <- vlist_order[1]

  return(result)
}

결과 확인

1. 길이가 5인 숫자 벡터

k1 <- c(5,2,3,1,4)
k1
[1] 5 2 3 1 4
find_minimum_value(k1)
[1] 1

2. 1부터 100 사이에서 추출된 10개의 랜덤 숫자 벡터

k2 <- sample(1:100, 10)
k2
[1] 72 44 15 38 39 28 22 77 78 12
find_minimum_value(k2)
[1] 12

마무리

R에서 기본 제공되는 다양한 함수들도 내부적으로는 동작하기 위한 다른 코드들의 조합으로 만들어지게 됩니다. 프로그래밍을 공부하시는 분들에게는 기본 제공되는 함수들의 동작 및 출력을 이해하고, 동일한 결과를 만들 수 있는 다른 코드 및 구조를 만들어보는 것도 생각의 확장 연습에 큰 도움이 됩니다. 남들이 만들어 놓은 함수들을 분석하고 나만의 함수, 개선된 함수를 만들어 공유한다면 오픈소스 생태계 발전에 소중한 도움이 될 것이라 생각합니다.


관련 링크

[1] [R] 최대/최소값 찾는 함수 만들기
[2] [R] 내가 원하는 구구단 출력 하기 (feat. 구구단 전체 출력)
[3] [R] return() 함수를 사용하는 이유


banner-request-analysis