วิธีเขียนฟังก์ชัน 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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *