Apakah ada yang punya contoh / tutorial penanganan pengecualian di R? Dokumentasi resminya sangat singkat.
r
exception-handling
gappy
sumber
sumber
Jawaban:
Selain jawaban Shane yang mengarahkan Anda ke diskusi StackOverflow lainnya, Anda dapat mencoba fitur pencarian kode. Jawaban asli yang menunjuk ke Pencarian Kode Google ini telah dihentikan, tetapi Anda dapat mencoba
Sekadar catatan, ada juga
try
tapitryCatch
mungkin lebih disukai. Saya mencoba hitung cepat di Google Code Search tetapi mencoba mendapatkan terlalu banyak positif palsu untuk kata kerja itu sendiri - namun tampaknyatryCatch
ini lebih banyak digunakan.sumber
Pada dasarnya Anda ingin menggunakan
tryCatch()
fungsi tersebut. Lihat bantuan ("tryCatch") untuk lebih jelasnya.Berikut adalah contoh sepele (perlu diingat bahwa Anda dapat melakukan apa pun yang Anda inginkan dengan kesalahan):
Lihat pertanyaan terkait ini:
sumber
Hasil dari pencarian google terkait ini membantu saya: http://biocodenv.com/wordpress/?p=15 .
sumber
Fungsinya
trycatch()
cukup mudah, dan ada banyak tutorial bagus tentang itu. Penjelasan yang sangat baik tentang penanganan kesalahan di R dapat ditemukan dalam buku Hadley Wickham Advanced-R , dan berikut ini adalah pengantar yang sangat mendasarwithCallingHandlers()
danwithRestarts()
dalam kata-kata sesedikit mungkin:Katakanlah seorang programmer tingkat rendah menulis sebuah fungsi untuk menghitung nilai absolut. Dia tidak yakin bagaimana cara menghitungnya, tapi tahu bagaimana membuat kesalahan dan dengan rajin menyampaikan kenaifannya:
Seorang programmer tingkat menengah juga menulis sebuah fungsi untuk menghitung nilai absolut, memanfaatkan
low_level_ABS
fungsi yang sayangnya tidak lengkap tersebut . Dia tahu bahwa kode tingkat rendah melemparnegative_value
kesalahan ketika nilaix
negatif dan menyarankan solusi untuk masalah, dengan menetapkanrestart
yang memungkinkan penggunamid_level_ABS
untuk mengontrol cara di manamid_level_ABS
pulih (atau tidak) darinegative_value
kesalahan.Akhirnya, pemrogram tingkat tinggi menggunakan
mid_level_ABS
fungsi tersebut untuk menghitung nilai absolut, dan menetapkan penangan kondisi yang memberi tahumid_level_ABS
untuk memulihkan darinegative_value
kesalahan dengan menggunakan penangan restart.Inti dari semua ini adalah bahwa dengan menggunakan
withRestarts()
danwithCallingHandlers()
, fungsihigh_level_ABS
tersebut dapat mengetahuimid_level_ABS
cara memulihkan dari kesalahan yang disebabkan olehlow_level_ABS
kesalahan tanpa menghentikan eksekusimid_level_ABS
, yang merupakan sesuatu yang tidak dapat Anda lakukan dengantryCatch()
:Dalam praktiknya,
low_level_ABS
merepresentasikan fungsi yangmid_level_ABS
memanggil banyak (bahkan mungkin jutaan kali), di mana metode penanganan error yang benar dapat bervariasi menurut situasi, dan pilihan cara menangani error tertentu diserahkan ke fungsi tingkat yang lebih tinggi (high_level_ABS
).sumber
Fungsi restart sangat penting di R yang diwarisi dari Lisp. Ini berguna jika Anda ingin memanggil beberapa fungsi di badan perulangan dan Anda hanya ingin program melanjutkan jika pemanggilan fungsi runtuh. Coba kode ini:
sumber