วิธีเขียนฟังก์ชัน trycatch() แรกของคุณใน r
คุณสามารถใช้ฟังก์ชัน tryCatch() ใน R เพื่อส่งคืนค่าของนิพจน์หรือสร้างข้อความที่กำหนดเองหากพบคำเตือนหรือข้อผิดพลาด
ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:
my_function <- function (x, y){ tryCatch ( #try to do this { #some expression }, #if an error occurs, tell me the error error= function (e) { message(' An Error Occurred ') print(e) }, #if a warning occurs, tell me the warning warning= function (w) { message(' A Warning Occurred ') print(w) return (NA) } ) }
ตัวอย่างต่อไปนี้แสดงวิธีการใช้ฟังก์ชัน tryCatch() ในทางปฏิบัติ
ตัวอย่าง: สร้างฟังก์ชัน tryCatch() ใน R
สมมติว่าเราสร้างฟังก์ชัน tryCatch() ต่อไปนี้ซึ่งพยายามรับบันทึกของค่าหนึ่งแล้วหารด้วยค่าที่สอง
หากมีข้อผิดพลาดเกิดขึ้น เราจะส่งออกข้อความ “เกิดข้อผิดพลาด” จากนั้นพิมพ์ข้อผิดพลาดไปที่ R
หากมีคำเตือนเกิดขึ้น เราจะส่งออกข้อความ “มีคำเตือนเกิดขึ้น” พิมพ์คำเตือนไปที่ R จากนั้นส่งคืนค่า NA
หากไม่มีข้อผิดพลาดหรือคำเตือนเกิดขึ้น เราก็จะส่งคืนผลลัพธ์ของฟังก์ชัน
log_and_divide <- function (x, y){
tryCatch (
{
result = log(x) / y
return (result)
},
error= function (e) {
message(' An Error Occurred ')
print(e)
},
warning= function (w) {
message(' A Warning Occurred ')
print(w)
return (NA)
}
)
}
ลองใช้ฟังก์ชันนี้ในสถานการณ์ต่างๆ
สถานการณ์ที่ 1: ไม่มีข้อผิดพลาดหรือคำเตือนเกิดขึ้น
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชันในสถานการณ์ที่ไม่มีข้อผิดพลาดหรือคำเตือนเกิดขึ้น
#run function
log_and_divide(10, 2)
[1] 1.151293
เนื่องจากไม่มีข้อผิดพลาดหรือคำเตือนเกิดขึ้น ฟังก์ชันจึงส่งคืนผลลัพธ์ของนิพจน์ ซึ่งกลายเป็น 1.151293
สถานการณ์ที่ 2: มีข้อผิดพลาดเกิดขึ้น
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชันในสถานการณ์ที่เกิดข้อผิดพลาด:
#run function
log_and_divide(10)
An Error Occurred
<simpleError in doTryCatch(return(expr), name, parentenv, handler):
argument "y" is missing, with no default>
เนื่องจากเราระบุอาร์กิวเมนต์เดียวให้กับฟังก์ชัน เราจึงได้รับข้อความว่า ” เกิดข้อผิดพลาด ” และเรายังเห็นข้อผิดพลาดที่แน่นอนที่เกิดจาก R
สถานการณ์ที่ 3: มีคำเตือนเกิดขึ้น
รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชันในสถานการณ์ที่มีคำเตือนเกิดขึ้น:
#run function
log_and_divide(-10, 2)
A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA
เนื่องจากเราระบุค่าลบสำหรับอาร์กิวเมนต์แรก R จึงไม่สามารถคำนวณบันทึกของค่าลบได้ ดังนั้นเราจึงได้รับข้อความแจ้งว่า ” มีคำเตือนเกิดขึ้น ” เราจะเห็นคำเตือนที่แน่นอนที่สร้างโดย R และฟังก์ชันส่งคืน NA เป็น มีค่าเป็นลบ ผลลัพธ์.
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่นๆ ใน R:
วิธีสร้าง For loop ที่ซ้อนกันใน R
วิธีเพิ่มค่าให้กับเวกเตอร์โดยใช้การวนซ้ำใน R
วิธีคืนค่าฟังก์ชันใน R