Apakah ada cara untuk mengontrol pesan kesalahan yang dilaporkan jika stopifnot () berhenti?
Nick
12
@Nick, tidak. Gunakan stopifnot()untuk pengujian validitas, untuk menguji kode itu melakukan apa yang seharusnya dilakukan, tetapi if (blahdiblah) stop("error message")untuk pengujian input, untuk menguji apakah input ke program itu valid. Hanya yang terakhir yang boleh terjadi selama penggunaan normal.
Harlan
6
Lihat juga assertthatpaket baru Hadley , yang memberikan jawaban lebih baik daripada stopifnot: github.com/hadley/assertthat
Harlan
12
@Nick:
Anda dapat mengontrol pesan kesalahan Anda jika Anda menulis fungsi dengan nama deskriptif untuk menguji kondisi yang akan menimbulkan kesalahan dalam program Anda. Berikut contohnya:
Anda bisa meletakkan definisi fungsi di dalamnya stopifnot()juga.
n nothing101
2
naught101, tujuan memiliki tes dalam fungsi bernama adalah untuk mendapatkan nama tes dicetak dalam pesan kesalahan
Matius
4
Ini bisa dicapai dengan stopperintah. Perintah ini akan menghentikan eksekusi suatu fungsi dan mencetak pesan kesalahan. Sebagai contoh, kita dapat menguji apakah variabel somethingadalah FALSE:
if(something ==FALSE){
stop("error message to print")}
Demikian pula, warningperintah akan mencetak peringatan (tetapi terus mengeksekusi kode).
if(something ==FALSE){
warning("error message to print")}
Keduanya disediakan oleh basis R dan tidak memerlukan paket untuk menjalankan atau menyertakan fungsi Anda sendiri secara tertulis. Saya lebih suka pendekatan ini untuk menulis kode dengan lebih sedikit ketergantungan dan sintaks ini banyak digunakan dalam pengembangan paket. Namun, fungsionalitas serupa didukung oleh paket "assertthat" dengan assert_thatfungsi yang baru-baru ini dirilis sebagai bagian dari "tidyverse" Hadley.
stopifnot()
untuk pengujian validitas, untuk menguji kode itu melakukan apa yang seharusnya dilakukan, tetapiif (blahdiblah) stop("error message")
untuk pengujian input, untuk menguji apakah input ke program itu valid. Hanya yang terakhir yang boleh terjadi selama penggunaan normal.assertthat
paket baru Hadley , yang memberikan jawaban lebih baik daripadastopifnot
: github.com/hadley/assertthat@Nick:
Anda dapat mengontrol pesan kesalahan Anda jika Anda menulis fungsi dengan nama deskriptif untuk menguji kondisi yang akan menimbulkan kesalahan dalam program Anda. Berikut contohnya:
Ini akan mencetak angka 1 hingga 8, lalu mencetak pesan yang bertuliskan
Alangkah baiknya jika "i" dalam tanda kurung diganti dengan nilai yang gagal dalam ujian, tetapi Anda mendapatkan apa yang Anda bayar.
Jika Anda membutuhkan sesuatu yang lebih mewah dari itu, lihat Runit dan uji seperti yang disarankan Harlan.
sumber
stopifnot()
juga.Ini bisa dicapai dengan
stop
perintah. Perintah ini akan menghentikan eksekusi suatu fungsi dan mencetak pesan kesalahan. Sebagai contoh, kita dapat menguji apakah variabelsomething
adalahFALSE
:Demikian pula,
warning
perintah akan mencetak peringatan (tetapi terus mengeksekusi kode).Keduanya disediakan oleh basis R dan tidak memerlukan paket untuk menjalankan atau menyertakan fungsi Anda sendiri secara tertulis. Saya lebih suka pendekatan ini untuk menulis kode dengan lebih sedikit ketergantungan dan sintaks ini banyak digunakan dalam pengembangan paket. Namun, fungsionalitas serupa didukung oleh paket "assertthat" dengan
assert_that
fungsi yang baru-baru ini dirilis sebagai bagian dari "tidyverse" Hadley.sumber