การแก้ไข argument ของฟังก์ชัน
ฟังก์ชันค่าเฉลี่ยฮาร์มอนิกเกือบเสร็จสมบูรณ์แล้ว แต่ยังต้องเพิ่มการตรวจสอบ argument na.rm อีกเล็กน้อย คราวนี้แทนที่จะโยนข้อผิดพลาดเมื่อ input อยู่ในรูปแบบที่ไม่ถูกต้อง เราจะลองแก้ไขค่านั้นแทน
na.rm ควรเป็น logical vector ที่มีหนึ่งองค์ประกอบ (คือ TRUE หรือ FALSE)
โหลดแพ็กเกจ assertive ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Introduction to Writing Functions in R
คำแนะนำการฝึกหัด
- อัปเดต
calc_harmonic_mean()เพื่อแก้ไข argumentna.rmโดยใช้use_first()เพื่อเลือกองค์ประกอบแรกของna.rmและใช้coerce_to()เพื่อแปลงให้เป็น logical
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Update the function definition to fix the na.rm argument
calc_harmonic_mean <- function(x, na.rm = FALSE) {
assert_is_numeric(x)
if(any(is_non_positive(x), na.rm = TRUE)) {
stop("x contains non-positive values, so the harmonic mean makes no sense.")
}
# Use the first value of na.rm, and coerce to logical
___ <- ___(___(___), ___ = "___")
x %>%
get_reciprocal() %>%
mean(na.rm = na.rm) %>%
get_reciprocal()
}
# See what happens when you pass it malformed na.rm
calc_harmonic_mean(std_and_poor500$pe_ratio, na.rm = 1:5)