시작하기무료로 시작하기

사용자 정의 오류 로직

때때로 assertiveassert_*() 함수들은 충분히 이해하기 쉬운 오류 메시지를 제공하지 않을 때가 있어요. 예를 들어, 숫자 범위를 확인하는 단언은 값이 범위를 벗어났다고만 알려 주고, 왜 그것이 문제인지까지는 설명하지 않아요. 이런 경우 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)
코드 편집 및 실행