प्रोग्रामिंग उदाहरणों के साथ आर While लूप

⚡ स्मार्ट सारांश

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

  • 🔁 मूल वाक्य संरचना: while (condition) { expression } पहले शर्त का परीक्षण करता है और बॉडी को केवल तभी चलाता है जब यह TRUE के रूप में मूल्यांकन करता है।
  • ⚠️ समाप्ति नियम: बॉडी के अंदर का स्टेटमेंट कंडीशन को बदलना चाहिए, अन्यथा लूप कभी खत्म नहीं होगा।
  • 🔢 काउंटर पैटर्न: लूप शुरू करने से पहले एक वेरिएबल को इनिशियलाइज़ करें और लूप के अंदर उसे बढ़ाएं, जो कि मानक गणना विधि है।
  • 🛑 प्रवाह नियंत्रण: break फ़ंक्शन लूप से तुरंत बाहर निकल जाता है और next फ़ंक्शन अगले चरण पर चला जाता है।
  • 🔁 विकल्प दोहराएँ: repeat बिना किसी शर्त के चलता है और पूरी तरह से break पर निर्भर करता है, जो do-while शैली के तर्क के लिए उपयुक्त है।
  • 📐 कब चुनें: जब पुनरावृत्तियों की संख्या पहले से अज्ञात हो तो while लूप का उपयोग करें, और जब यह निश्चित हो तो for लूप का उपयोग करें।

आर में While लूप

आर प्रोग्रामिंग में 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
}

किसी भी लूप में, जिसका निकास यादृच्छिक या बाहरी डेटा पर निर्भर करता है, अधिकतम पुनरावृति संख्या जोड़ना एक सस्ता बीमा है।

अक्सर पूछे जाने वाले प्रश्न

while लूप पहले पास से पहले अपनी स्थिति की जांच करता है, इसलिए यह शून्य बार चल सकता है। repeat लूप में कोई शर्त नहीं होती और यह हमेशा कम से कम एक बार चलता है, और केवल break स्टेटमेंट तक पहुंचने पर ही समाप्त होता है।

RStudio में निष्पादन को रोकने के लिए Esc दबाएँ या टर्मिनल में Ctrl+C दबाएँ। इस स्थिति से बचने के लिए, यह सुनिश्चित करें कि बॉडी के अंदर कोई स्टेटमेंट कंडीशन को बदल दे और अधिकतम पुनरावृति काउंटर जोड़ें।

while लूप का प्रयोग तब करें जब पुनरावृत्तियों की संख्या लूप के अंदर गणना किए गए परिणाम पर निर्भर करती हो, जैसे कि किसी मान के थ्रेशहोल्ड को पार करने की प्रतीक्षा करना। for लूप का प्रयोग तब करें जब लूप शुरू होने से पहले अनुक्रम ज्ञात हो।

ग्रेडिएंट डिसेंट, के-मीन्स और एक्सपेक्टेशन मैक्सिमाइजेशन जैसे पुनरावृत्ति एल्गोरिदम एक निश्चित संख्या के लिए चलने के बजाय अभिसरण तक चलते हैं, जो कि बिल्कुल व्हाइल पैटर्न है।

जी हां। एआई सहायक किसी छूटे हुए काउंटर अपडेट या ऐसी स्थिति का पता लगा सकते हैं जो कभी गलत नहीं हो सकती। निदान की पुष्टि करने के लिए हमेशा एक प्रिंट स्टेटमेंट या पुनरावृति सीमा जोड़ें।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: