Özel hata mantığı
Bazen assertive içindeki assert_*() fonksiyonları en açıklayıcı hata mesajını vermez. Örneğin, bir sayının sayısal bir aralıkta olup olmadığını kontrol eden doğrulamalar, kullanıcıya bir değerin aralık dışında olduğunu söyler ama bunun neden sorun olduğunu söylemez. Böyle durumlarda, özel geri bildirim tanımlamak için iletiler, uyarılar veya hatalarla birlikte is_*() fonksiyonlarını kullanabilirsin.
Harmonik ortalama sadece x'in tüm değerleri pozitif olduğunda anlamlıdır. (Nedenini görmek için bir ve eksi birin harmonik ortalamasını hesaplamayı dene.) Kullanıcılarının bunu bildiğinden emin ol!
Bu egzersiz, kursun bir parçasıdır
R'de Fonksiyon Yazmaya Giriş
Egzersiz talimatları
x'in herhangi bir değeri (NA'leri yok sayarak) pozitif değilse bir hata fırlat.calc_harmonic_mean()fonksiyonuna karakter argüman verdiğinde ne olduğuna bak.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)