@flodel के लिए इसका सही उत्तर है, जो next
के बजाय break
का उपयोग करना है। दुर्भाग्यवश, उस उत्तर में उदाहरण एक ही परिणाम देगा जो भी नियंत्रण प्रवाह निर्माण का उपयोग किया गया था।
मैं निम्नलिखित उदाहरण जोड़ रहा हूं कि यह स्पष्ट करने के लिए कि दोनों संरचनाओं का व्यवहार अलग-अलग कैसे है।
## Using `break`
for (i in 1:3) {
for (j in 3:1) { ## j is iterated in descending order
if ((i+j) > 4) {
break ## << Only line that differs
} else {
cat(sprintf("i=%d, j=%d\n", i, j))
}}}
# i=1, j=3
# i=1, j=2
# i=1, j=1
## Using `next`
for (i in 1:3) {
for (j in 3:1) { ## j is iterated in descending order
if ((i+j) > 4) {
next ## << Only line that differs
} else {
cat(sprintf("i=%d, j=%d\n", i, j))
}}}
# i=1, j=3
# i=1, j=2
# i=1, j=1
# i=2, j=2 ## << Here is where the results differ
# i=2, j=1 ##
# i=3, j=1 ##
स्रोत
2012-05-28 19:20:30
देखें: 'next' और' break', लेकिन यहाँ मैं नहीं बल्कि तरह एक आंतरिक पाश होगा: '(1000 में j: 970) के लिए {...}' – daroczig