Cara menulis fungsi trycatch() pertama anda di r


Anda dapat menggunakan fungsi tryCatch() di R untuk mengembalikan nilai ekspresi atau menghasilkan pesan khusus jika terjadi peringatan atau kesalahan.

Fungsi ini menggunakan sintaks dasar berikut:

 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)
        }
    )
}

Contoh berikut menunjukkan cara menggunakan fungsi tryCatch() dalam praktiknya.

Contoh: Buat fungsi tryCatch() di R

Katakanlah kita membuat fungsi tryCatch() berikut yang mencoba mengambil log dari satu nilai dan kemudian membaginya dengan nilai kedua.

Jika terjadi kesalahan, kami akan menampilkan pesan “Terjadi kesalahan” dan kemudian mencetak kesalahan tersebut ke R.

Jika peringatan terjadi, kami akan menampilkan pesan “Peringatan telah terjadi”, mencetak peringatan tersebut ke R, dan kemudian mengembalikan nilai NA.

Jika tidak ada kesalahan atau peringatan yang terjadi, kami hanya akan mengembalikan hasil fungsinya.

 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)
        }
    )
}

Mari jalankan fungsi ini dalam skenario yang berbeda.

Skenario 1: Tidak ada kesalahan atau peringatan yang terjadi.

Kode berikut menunjukkan cara menggunakan fungsi dalam skenario di mana tidak ada kesalahan atau peringatan yang terjadi.

 #run function
log_and_divide(10, 2)

[1] 1.151293

Karena tidak ada kesalahan atau peringatan yang terjadi, fungsi tersebut hanya mengembalikan hasil ekspresi, yang ternyata adalah 1.151293 .

Skenario 2: Terjadi kesalahan.

Kode berikut menunjukkan cara menggunakan fungsi dalam skenario dimana terjadi kesalahan:

 #run function
log_and_divide(10)

An Error Occurred
<simpleError in doTryCatch(return(expr), name, parentenv, handler):
  argument "y" is missing, with no default>

Karena kami hanya memberikan satu argumen ke fungsi tersebut, kami menerima pesan yang mengatakan ” Telah terjadi kesalahan ” dan kami juga melihat kesalahan persis yang dihasilkan oleh R.

Skenario 3: Terjadi peringatan.

Kode berikut menunjukkan cara menggunakan fungsi dalam skenario ketika peringatan terjadi:

 #run function
log_and_divide(-10, 2)

A Warning Occurred
<simpleWarning in log(x): NaNs produced>
[1] NA

Karena kita memberikan nilai negatif untuk argumen pertama, R tidak dapat menghitung log nilai negatif, jadi kita menerima pesan yang mengatakan ” Peringatan telah terjadi “, kita melihat peringatan persis yang dihasilkan oleh R dan fungsi mengembalikan NA sebagai mempunyai nilai negatif. hasil.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di R:

Cara membuat loop For bersarang di R
Cara menambahkan nilai pada vektor menggunakan loop di R
Cara mengembalikan nilai suatu fungsi di R

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *