2011-06-08 10 views
7

मुझे आश्चर्य है कि आर में किसी भी कीवर्ड को बिना किसी निष्पादन के फ़ंक्शन से बाहर कूदने के लिए कोई कीवर्ड है या नहीं। सी, जावा, या मैटलैब में, कीवर्ड 'वापसी' है। लेकिन आर में 'वापसी' कीवर्ड उन भाषाओं में से अलग काम करता है। यहाँ एक उदाहरण,आर में, बाकी के निष्पादन किए बिना फ़ंक्शन से बाहर कूदने के लिए कीवर्ड क्या है?

myfunc = function() { 
    if (TRUE) { 
     return # hopefully, jump out of the function 
    } 
    print('the rest of the function is still executed!') 
} 

उदाहरण, जावा जैसी भाषाओं को निष्पादित करेंगे नहीं 'आराम' जब 'वापसी' पूरा किया जाता है, जबकि आर 'वापसी' में ही अगर बयान और के दायरे में है में है बाकी कार्यों को अभी भी निष्पादित किया गया है। इस विशेष उदाहरण में मैं इसे प्राप्त करने के लिए 'else' ब्लॉक जोड़ सकता था लेकिन मैं जानना चाहता हूं कि कोई ऐसा कीवर्ड है जो जावा आदि जैसे समान व्यवहार देगा। धन्यवाद।

उत्तर

7

क्या आपको बताएंगे कि वास्तव में वाक्य रचना मान्य आर कोड है ... लेकिन आप में से return के लिए एक मूल्य की आपूर्ति नहीं गलती की है।

R> myfunc <- function() { 
    if (TRUE) { 
     return(NULL) # hopefully, jump out of the function 
    } 
    print('the rest of the function is still executed!') 
} 
myfunc <- function() { 
+ if (TRUE) { 
+  return(NULL) # hopefully, jump out of the function 
+ } 
+ print('the rest of the function is still executed!') 
+ } 
R> myfunc() 
NULL 
R> 
+0

उत्तर के लिए धन्यवाद। मैंने अभी पाया है कि रिटर्न() भी काम करेगा और डिफ़ॉल्ट रूप से पूर्ण रूप से वापस आ जाएगा, लेकिन मुझे लगता है कि एक मूल्य प्रदान करना एक अच्छी शैली होगी। धन्यवाद। – Causality

+0

+1, कभी भी एहसास नहीं हुआ कि 'वापसी()' ने फ़ंक्शन निष्पादित करना बंद कर दिया है, निश्चित रूप से मेरे कोड में कुछ और 'और '{}' बचाएगा! –

3

मुझे लगता है कि आप के लिए देख रहे हैं:

stopifnot() 
+0

stopifnot() बहुत ही उपयोगी है, लेकिन मैं एक प्रकार की कटार के जवाब को स्वीकार करेंगे: तो यहाँ एक सही संस्करण है। धन्यवाद। – Causality

संबंधित मुद्दे