Jawaban:
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.
assertthat
paket baru Hadley , yang memberikan jawaban lebih baik daripada stopifnot
: 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:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
Ini akan mencetak angka 1 hingga 8, lalu mencetak pesan yang bertuliskan
Error: Less_Than_8(i) is not TRUE
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.
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 variabel something
adalah FALSE
:
if(something == FALSE){
stop("error message to print")
}
Demikian pula, warning
perintah 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_that
fungsi yang baru-baru ini dirilis sebagai bagian dari "tidyverse" Hadley.