Bagaimana seseorang "melempar" kesalahan pada R? Saya memiliki fungsi yang mengambil bingkai data dan beberapa nama kolom dan mengerjakannya. Jika kolom tidak ada, saya ingin fungsi berhenti dan menghentikan semua fungsi tergantung padanya.
Saya telah melihat recover
dan browse
dan traceback
tetapi, yah, mereka sepertinya dekat tetapi tidak apa yang saya cari.
r
error-handling
forkandunggu
sumber
sumber
Jawaban:
Lihat
help(tryCatch)
:dan kemudian di bawah 'Lihat Juga':
jadi kamu mungkin mau
stop
.sumber
traceback()
setelah kesalahan untuk melihat apa yang salah). Menggunakanstop
dierror
argumentryCatch
akan mengacaukan jejak. Namun,finally
argumen tersebut akan memungkinkan untuk melempar pesan tambahan dan membuat jejak berguna. Tidak tepat pada topik, tapi, saya rasa, cukup penting untuk menjamin beberapa minus dan ancaman moderat mengeluarkan komentar ini keluar dari jendela. :-)Contoh sederhana:
sumber
Di luar fungsi dasar yang Dirk sebutkan:
The R.oo paket memiliki tambahan fungsi yang menangani exception, termasuk fungsi lemparan () yang sangat berguna. Anda dapat menangkap pengecualian dengan fungsi try atau trycatch yang biasa:
Anda dapat membaca lebih lanjut di sini: http://www1.maths.lth.se/help/R/R.oo/
sumber
plot
memplot sebuah fungsi,try
stop
warn
semua berfungsi seperti yang Anda harapkan, dan hampir semua yang ingin saya lakukan adalah one-liner.Sebenarnya fungsi
stopifnot
ini sangat mudah untuk menerapkan pemeriksaan kewarasan dalam kode Anda. Ini mengambil beberapa ekspresi logis dan mengembalikan kesalahan jika salah satu dari mereka bernilai false.Contoh: Untuk memeriksa apakah kolom 'c' ada dalam kerangka data 'df':
Ini akan menimbulkan kesalahan berikut:
sumber
assert(...)
...Anda dapat memeriksa apakah kolom ada dan melakukan apa pun yang Anda inginkan.
Misalkan
data.frame
namadf1
dan memeriksa jikacol1
ada kolom :atau
Misalnya
sumber