เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ตรรกะข้อผิดพลาดแบบกำหนดเอง

บางครั้งฟังก์ชัน assert_*() ใน assertive อาจให้ข้อความแจ้งข้อผิดพลาดที่ไม่ชัดเจนพอ ตัวอย่างเช่น การตรวจสอบว่าค่าตัวเลขอยู่ในช่วงที่กำหนดหรือไม่จะบอกเพียงว่าค่านั้นอยู่นอกช่วง แต่ไม่ได้อธิบายว่าทำไมถึงเป็นปัญหา ในกรณีนี้ สามารถใช้ฟังก์ชัน is_*() ร่วมกับข้อความ คำเตือน หรือข้อผิดพลาด เพื่อกำหนดข้อความตอบกลับแบบกำหนดเองได้

ค่าเฉลี่ยฮาร์มอนิกจะมีความหมายก็ต่อเมื่อค่าทุกตัวใน x เป็นบวกเท่านั้น (ลองคำนวณค่าเฉลี่ยฮาร์มอนิกของ 1 กับ -1 เพื่อดูว่าทำไม) ควรให้ผู้ใช้รับรู้เรื่องนี้ด้วย

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Introduction to Writing Functions in R

ดูคอร์ส

คำแนะนำการฝึกหัด

  • หากค่าใดใน x ไม่เป็นบวก (โดยไม่นับ 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)
แก้ไขและรันโค้ด