एक बयान जो जाँचता है कि क्या कुछ सत्य है और यदि नहीं दिया गया त्रुटि संदेश प्रिंट करता है और बाहर निकलता है
जवाबों:
stopifnot()
वैधता परीक्षण के लिए उपयोग करें , यह जांचने के लिए कि कोड वह कर रहा है जो वह कर रहा है, लेकिन if (blahdiblah) stop("error message")
इनपुट परीक्षण के लिए, यह परीक्षण करने के लिए कि प्रोग्राम के लिए इनपुट मान्य है। केवल बाद वाले को कभी-कभी सामान्य उपयोग के दौरान होना चाहिए।
assertthat
पैकेज भी देखें , जो इससे बेहतर जवाब देता stopifnot
है: github.com/hadley/assertthat
@Nick:
आप अपने त्रुटि संदेश को नियंत्रित कर सकते हैं यदि आप उस स्थिति का परीक्षण करने के लिए एक वर्णनात्मक नाम के साथ एक फ़ंक्शन लिखते हैं जो आपके प्रोग्राम में एक त्रुटि फेंक देगा। यहाँ एक उदाहरण है:
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" को उस मान से बदल दिया गया जो परीक्षण में विफल रहा, लेकिन आपको वह मिलता है जो आप भुगतान करते हैं।
यदि आपको उससे कुछ भी कट्टरपंथी की आवश्यकता है, तो हरित द्वारा सुझाए अनुसार रनरेट और टेस्टाटैट में देखें।
stopifnot()
भी अंदर रख सकते हैं।
यह stop
कमांड के साथ प्राप्त किया जा सकता है । यह कमांड किसी फ़ंक्शन के निष्पादन को रोक देगा और त्रुटि संदेश प्रिंट करेगा। उदाहरण के लिए, हम परीक्षण कर सकते हैं कि चर क्या something
है FALSE
:
if(something == FALSE){
stop("error message to print")
}
इसी तरह, warning
कमांड एक चेतावनी प्रिंट करेगा (लेकिन कोड को निष्पादित करना जारी रखें)।
if(something == FALSE){
warning("error message to print")
}
ये दोनों आधार आर द्वारा प्रदान किए गए हैं और इन्हें चलाने के लिए या अपने कार्यों को लिखने में शामिल करने के लिए किसी पैकेज की आवश्यकता नहीं है। मैं कम निर्भरता वाले कोड लिखने के लिए इस दृष्टिकोण को पसंद करता हूं और इस वाक्यविन्यास का व्यापक रूप से पैकेज विकास में उपयोग किया जाता है। हालांकि, इसी तरह की कार्यक्षमता को "एसरथेट" पैकेज द्वारा फ़ंक्शन के साथ समर्थित किया गया है assert_that
जो हाल ही में हैडली के "टिड्वर्स" के हिस्से के रूप में जारी किया गया है।