Logika galat kustom
Terkadang fungsi assert_*() dalam assertive tidak memberikan pesan galat yang paling informatif. Misalnya, pernyataan yang memeriksa apakah suatu angka berada dalam rentang numerik akan memberi tahu pengguna bahwa suatu nilai berada di luar rentang, tetapi tidak menjelaskan mengapa hal itu bermasalah. Dalam kasus seperti ini, Anda dapat menggunakan fungsi is_*() bersama dengan pesan, peringatan, atau galat untuk menentukan umpan balik kustom.
Rata-rata harmonik hanya masuk akal ketika x berisi semua nilai positif. (Cobalah menghitung rata-rata harmonik dari satu dan minus satu untuk melihat alasannya.) Pastikan pengguna Anda mengetahui hal ini!
Latihan ini adalah bagian dari kursus
Pengantar Penulisan Fungsi di R
Petunjuk latihan
- Jika ada nilai
xyang tidak positif (mengabaikanNA) maka munculkan galat. - Perhatikan apa yang terjadi saat Anda meneruskan argumen bertipe karakter ke
calc_harmonic_mean().
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)