해당 포스트는 네이버지식인을 통해 질문 받은 '두 인자 x,y의 최대값, 최소값, 합계, 분산 및 표준편차를 계산하고 결과를 리스트로 출력하는 방법'에 대한 답변을 공유하는 글입니다. 만약, 최대값/최소값만 찾는 코드가 필요하신 분은 아래 링크를 참고해 주세요.
질문
두 인자 x, y의 최대값, 최솟값, 합계, 분산, 표준편차를 계산하여 리스트 형태로 결과를 출력하는 함수를 만들어 주세요.
풀이
1. 문제 해석
데이터 분석과 통계에서 최댓값(max()
), 최솟값(min()
), 합계(sum()
), 분산(var()
), 표준편차(sd()
)와 같은 요약 통계량을 계산하는 것은 자주 수행하는 작업입니다. 문제에서는 x
와 y
두 인자를 입력받아 요약 통계량을 계산하는 사용자 함수를 만들도록 지시하고 있습니다.
아래에서는 각 통계 함수들을 이용하여 요약 통계량을 계산해주는 사용자 함수 calculate_summary(x,y)
에 대해 설명합니다.
2. 코드 작성
아래에서 설명할 사용자 함수 calculate_summary()
는 x
와 y
라는 두 인자를 받도록 정의합니다. 함수 내부에서는 result
라는 리스트 객체가 생성되어 계산된 요약 통계량을 저장하며, 함수는 max()
, min()
, sum()
, var()
, sqrt()
와 같은 내장된 R 함수를 사용하여 x
와 y
의 최댓값, 최솟값, 합계, 분산, 표준편차를 계산합니다.
이러한 값을 result
리스트에 리스트 인덱싱을 사용하여 저장하고 함수의 출력으로 반환합니다.
# x와 y의 최댓값, 최솟값, 합계, 분산, 표준편차를 계산하여 리스트 형태로 반환하는 함수
calculate_summary <- function(x, y) {
result <- list()
# 최댓값 계산
result$max <- max(x, y)
# 최솟값 계산
result$min <- min(x, y)
# 합계 계산
result$sum <- sum(x, y)
# 분산 계산
result$variance <- var(c(x, y))
# 표준편차 계산
result$standard_deviation <- sqrt(result$variance)
return(result)
}
# 샘플 데이터 생성
x <- c(1, 3, 5)
y <- c(2, 4, 6)
# 사용자 함수 확인
output <- calculate_summary(x, y)
output
$max [1] 6 $min [1] 1 $sum [1] 21 $variance [1] 3.5 $standard_deviation [1] 1.870829
마무리
해당 포스트에서는 calculate_summary()
를 만들어 최댓값, 최솟값, 합계, 분산, 표준편차 값을 리스트 형식으로 반환(return)해 주도록 구현하였으며, 해당 방법을 잘 익히신다면 사용자 함수 정의 연습에 도움이 될 거라 생각합니다.
관련 링크
[1] 네이버 지식인
[2] [R] 최대/최소값 찾는 함수 만들기