प्रोग्रामिंग उदाहरणों के साथ आर While लूप
⚡ स्मार्ट सारांश
R प्रोग्रामिंग में while लूप तब तक कोड के एक ब्लॉक को दोहराता है जब तक उसकी शर्त TRUE रहती है। हर बार लूप चलने से पहले शर्त की जाँच की जाती है, इसलिए लूप का मुख्य भाग कभी भी नहीं चल सकता है, और अंततः इसके अंदर कुछ ऐसा होना चाहिए जो शर्त को FALSE कर दे।

आर प्रोग्रामिंग में While लूप
A घुमाव के दौरान R में, एक कोड ब्लॉक तब तक दोहराया जाता है जब तक उसकी शर्त सही रहती है। शर्त का परीक्षण किया जाता है। से पहले प्रत्येक पास में, इसलिए यदि शर्त शुरू से ही गलत है तो while लूप शून्य बार चल सकता है।
आर में While लूप सिंटैक्स
आर प्रोग्रामिंग में While Loop का सिंटैक्स निम्नलिखित है:
while (condition) {
Exp
}
आर व्हाइल लूप फ्लोचार्ट

नोटलूप के अंदर कुछ ऐसा होना चाहिए जिससे अंततः यह स्थिति गलत हो जाए। यदि ऐसा नहीं होता है, तो लूप हमेशा चलता रहेगा और आपको R बटन को Esc या Ctrl+C से रोकना होगा।
R में while लूप, for लूप और repeat लूप का उपयोग किया जाता है।
R में तीन शौचालय हैंping कई संरचनाएं हैं, और उनमें से चुनाव इस बात पर निर्भर करता है कि आपको पहले से पता है कि आपको कितनी पुनरावृत्तियों की आवश्यकता है।
| मापदंड | जब | एसटी | दोहराना |
|---|---|---|---|
| पुनरावृति गणना | पहले से अज्ञात | पहले से ज्ञात | पहले से अज्ञात |
| परीक्षण की गई स्थिति | प्रत्येक पास से पहले | क्रम समाप्त हो गया है | कभी नहीं, आपको ब्रेक लेना होगा |
| न्यूनतम रन | शून्य | शून्य | एक |
| विशिष्ट उपयोग | एक सीमा की ओर अभिसरण | किसी सदिश या सूची पर चलना | डू-व्हाइल शैली का तर्क |
| वाक्य - विन्यास | जबकि (शर्त) { } | (i in v) के लिए { } | दोहराएँ { … विराम } |
# repeat always runs at least once count <- 1 repeat { print(count) count <- count + 1 if (count > 5) break }
ऊपर दिया गया स्टॉक का उदाहरण 'व्हाइल' सिद्धांत के लिए बिल्कुल उपयुक्त है: आप पहले से यह नहीं जान सकते कि कीमत 45 तक गिरने से पहले कितने यादृच्छिक ड्रॉ की आवश्यकता होगी।
R में व्हाइल लूप: उदाहरण
उदाहरण 1
सबसे सरल से शुरू करें आर प्रोग्रामिंग उदाहरण के लिए, आप एक काउंटर बनाते हैं और हर बार चलने पर उसमें 1 जोड़ते हैं। लूप को समाप्त होना चाहिए, इसलिए शर्त स्पष्ट रूप से R को बताती है कि चर का मान 10 से अधिक होने पर रुक जाए।
नोटयदि आप वर्तमान लूप मान देखना चाहते हैं, तो आपको वेरिएबल को print() फ़ंक्शन के अंदर लपेटना होगा।
#Create a variable with value 1 begin <- 1 #Create the loop while (begin <= 10){ #See which loop we are on cat('This is loop number', begin, '\n') #add 1 to the variable begin after each loop begin <- begin+1 print(begin) }
आउटपुट:
## This is loop number 1[1] 2 ## This is loop number 2[1] 3 ## This is loop number 3[1] 4 ## This is loop number 4[1] 5 ## This is loop number 5[1] 6 ## This is loop number 6[1] 7 ## This is loop number 7[1] 8 ## This is loop number 8[1] 9 ## This is loop number 9[1] 10 ## This is loop number 10[1] 11
उदाहरण 2
मान लीजिए आपने 50 डॉलर में एक शेयर खरीदा। यदि कीमत 45 या उससे नीचे गिर जाती है, तो आप उसे शॉर्ट सेल करना चाहेंगे, अन्यथा आप उसे अपने पास रखेंगे। लूप के प्रत्येक चरण में कीमत 50 के आसपास किसी भी दिशा में 10 तक यादृच्छिक रूप से बदलती रहती है।
set.seed(123) # Set variable stock and price stock <- 50 price <- 50 # Loop variable counts the number of loops loop <- 1 # Set the while statement while (price > 45){ # Create a random price between 40 and 60 price <- stock + sample(-10:10, 1) # Count the number of loop loop <- loop + 1 # Print the number of loop print(loop) }
आउटपुट:
## [1] 2 ## [1] 3 ## [1] 4 ## [1] 5 ## [1] 6 ## [1] 7
cat('it took',loop,'loop before we short the price. The lowest price is',price)
आउटपुट:
## it took 7 loop before we short the price. The lowest price is 40
व्हाइल लूप में ब्रेक और नेक्स्ट का उपयोग कैसे करें
दो कीवर्ड किसी भी R लूप के सामान्य प्रवाह को बदल देते हैं।
- तोड़ना लूप से तुरंत बाहर निकलता है, स्किप करेंping प्रत्येक शेष पुनरावृति।
- अगला यह केवल वर्तमान पुनरावृति को छोड़ देता है और सीधे अगली स्थिति परीक्षण पर चला जाता है।
# break: stop as soon as a condition is met i <- 1 while (i <= 100) { if (i * i > 50) { cat('First square above 50 is', i * i, '\n') break } i <- i + 1 } # next: skip the even numbers i <- 0 while (i < 10) { i <- i + 1 if (i %% 2 == 0) next print(i) }
एक ऐसा जाल जिसके बारे में जानना जरूरी है। while लूप में, next वापस कंडीशन टेस्ट पर चला जाता है। बिना इसके नीचे कुछ भी चल रहा है। यदि आपका काउंटर बॉडी के निचले भाग में बढ़ाया जाता है, तो अगला उस वृद्धि को छोड़ देता है और लूप हमेशा के लिए रुक जाता है। इसीलिए दूसरे उदाहरण में वृद्धि होती है। से पहले इसके बाद वाले कथन के बजाय अगला कथन।
सामान्य व्हाइल लूप त्रुटियाँ और अनंत लूप
लगभग हर असफल while लूप के लिए चार गलतियाँ जिम्मेदार होती हैं।
- काउंटर कभी अपडेट नहीं होता। वृद्धि को भूल जाने पर यह स्थिति स्थायी रूप से सत्य बनी रहती है। RStudio में Esc दबाएँ, या टर्मिनल में Ctrl+C दबाकर इसे रोकें।
- यह शर्त NA लौटाती है। यदि परीक्षण में कोई भी मान NA है, तो R "TRUE/FALSE की आवश्यकता वाले स्थान पर मान अनुपस्थित है" त्रुटि के साथ रुक जाता है। इसे is.na() या isTRUE() से सुरक्षित करें।
- यह शर्त एक से अधिक तत्वों वाली है। R 4.2 के बाद से, एक से अधिक लंबाई वाली शर्त को चेतावनी के बजाय त्रुटि माना जाता है। इसे किसी भी() या सभी() फ़ंक्शन के अंतर्गत रखें।
- फ्लोटिंग-पॉइंट तुलना कभी भी FALSE नहीं होती है। while (x != 0.3) लूप हमेशा के लिए चल सकता है क्योंकि 0.1 + 0.2 ठीक 0.3 नहीं है। इसके बजाय, abs(x – 0.3) > 1e-8 का उपयोग करके एक सहनशीलता के साथ तुलना करें।
# Safety valve: cap the number of iterations iter <- 0 while (price > 45 && iter < 1000) { price <- stock + sample(-10:10, 1) iter <- iter + 1 }
किसी भी लूप में, जिसका निकास यादृच्छिक या बाहरी डेटा पर निर्भर करता है, अधिकतम पुनरावृति संख्या जोड़ना एक सस्ता बीमा है।
