คำสั่งที่ตรวจสอบว่ามีบางสิ่งเป็นจริงหรือไม่และหากไม่พิมพ์ข้อความแสดงข้อผิดพลาดที่ระบุและออก
คำสั่งที่ตรวจสอบว่ามีบางสิ่งเป็นจริงหรือไม่และหากไม่พิมพ์ข้อความแสดงข้อผิดพลาดที่ระบุและออก
คำตอบ:
stopifnot()
สำหรับการทดสอบความถูกต้องเพื่อทดสอบว่าโค้ดกำลังทำในสิ่งที่ควรจะทำ แต่if (blahdiblah) stop("error message")
สำหรับการทดสอบอินพุตเพื่อทดสอบว่าอินพุตของโปรแกรมนั้นถูกต้อง เฉพาะอย่างหลังเท่านั้นที่ควรเกิดขึ้นระหว่างการใช้งานปกติ
@ นิค:
คุณสามารถควบคุมข้อความแสดงข้อผิดพลาดของคุณได้หากคุณเขียนฟังก์ชันด้วยชื่อที่สื่อความหมายเพื่อทดสอบเงื่อนไขที่จะทำให้เกิดข้อผิดพลาดในโปรแกรมของคุณ นี่คือตัวอย่าง:
Less_Than_8 = function(x) return(x < 8)
for (i in 1:10)
{
print(i)
stopifnot(Less_Than_8(i))
}
ขั้นตอนนี้จะพิมพ์ตัวเลข 1 ถึง 8 จากนั้นพิมพ์ข้อความว่า
Error: Less_Than_8(i) is not TRUE
คงจะดีไม่น้อยถ้า "i" ในวงเล็บถูกแทนที่ด้วยค่าที่ไม่ผ่านการทดสอบ แต่คุณจะได้รับสิ่งที่คุณจ่ายไป
หากคุณต้องการอะไรที่แปลกกว่านั้นให้ดู Runit และทดสอบตามที่ Harlan แนะนำ
stopifnot()
เช่นกัน
สิ่งนี้สามารถทำได้ด้วยstop
คำสั่ง คำสั่งนี้จะหยุดการทำงานของฟังก์ชันและพิมพ์ข้อความแสดงข้อผิดพลาด ตัวอย่างเช่นเราสามารถทดสอบว่าตัวแปรsomething
คือFALSE
:
if(something == FALSE){
stop("error message to print")
}
ในทำนองเดียวกันwarning
คำสั่งจะพิมพ์คำเตือน (แต่ดำเนินการต่อรหัสต่อไป)
if(something == FALSE){
warning("error message to print")
}
สิ่งเหล่านี้มีให้โดยฐาน R และไม่จำเป็นต้องมีแพ็คเกจเพื่อรันหรือรวมไว้ในการเขียนฟังก์ชันของคุณเอง ฉันชอบวิธีนี้ในการเขียนโค้ดที่มีการพึ่งพาน้อยกว่าและไวยากรณ์นี้ใช้กันอย่างแพร่หลายในการพัฒนาแพ็คเกจ อย่างไรก็ตามฟังก์ชันที่คล้ายกันนี้ได้รับการสนับสนุนโดยแพ็กเกจ "assertthat" พร้อมกับassert_that
ฟังก์ชันที่เพิ่งเปิดตัวซึ่งเป็นส่วนหนึ่งของ "tidyverse" ของ Hadley