사용자 정의 오류 로직
때때로 assertive의 assert_*() 함수들은 충분히 이해하기 쉬운 오류 메시지를 제공하지 않을 때가 있어요. 예를 들어, 숫자 범위를 확인하는 단언은 값이 범위를 벗어났다고만 알려 주고, 왜 그것이 문제인지까지는 설명하지 않아요. 이런 경우 is_*() 함수들을 메시지, 경고, 또는 오류와 함께 사용해 사용자 정의 피드백을 만들 수 있어요.
조화 평균은 x의 모든 값이 양수일 때만 의미가 있어요. (1과 -1의 조화 평균을 계산해 보면 이유를 알 수 있어요.) 사용자에게 이 점을 꼭 알려 주세요!
이 연습은 강의의 일부입니다
R 함수 작성 입문
연습 안내
x에 음수가 포함되었거나 0이 있는 값이 하나라도 있으면(NA는 무시) 오류를 발생시키세요.calc_harmonic_mean()에 문자형 인자를 전달하면 어떻게 되는지 확인해 보세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
calc_harmonic_mean <- function(x, na.rm = FALSE) {
assert_is_numeric(x)
# Check if any values of x are non-positive
if(___(___(___), na.rm = TRUE)) {
# Throw an error
___("x contains non-positive values, so the harmonic mean makes no sense.")
}
x %>%
get_reciprocal() %>%
mean(na.rm = na.rm) %>%
get_reciprocal()
}
# See what happens when you pass it negative numbers
calc_harmonic_mean(std_and_poor500$pe_ratio - 20)