Control Flow and Loops in R | R में नियंत्रण प्रवाह और लूप्स


R में नियंत्रण प्रवाह और लूप्स (Control Flow and Loops in R)

परिचय

R प्रोग्रामिंग में नियंत्रण प्रवाह (Control Flow) और लूप्स (Loops) प्रोग्राम की दिशा तय करने के लिए प्रयोग किए जाते हैं। ये यह निर्धारित करते हैं कि कौन सा कोड ब्लॉक कब और कितनी बार निष्पादित (Execute) होगा। बिना नियंत्रण प्रवाह और लूप्स के कोई भी प्रोग्राम लचीला और प्रभावी नहीं हो सकता।

R में नियंत्रण प्रवाह के लिए if, else, ifelse() जैसे कंडीशनल स्टेटमेंट्स तथा for, while, repeat जैसे लूप्स का उपयोग किया जाता है। इनके माध्यम से हम निर्णय-आधारित और पुनरावृत्ति-आधारित प्रोग्राम बना सकते हैं।

1️⃣ नियंत्रण प्रवाह (Control Flow)

if स्टेटमेंट

if स्टेटमेंट का प्रयोग किसी शर्त के सत्य होने पर कोड चलाने के लिए किया जाता है।

x <- 10
if (x > 5) {
  print('x 5 से बड़ा है')
}

if...else स्टेटमेंट

यदि शर्त गलत हो तो else ब्लॉक निष्पादित होता है।

x <- 3
if (x > 5) {
  print('x 5 से बड़ा है')
} else {
  print('x 5 से छोटा है')
}

if...else if...else स्टेटमेंट

marks <- 85
if (marks >= 90) {
  print('Grade A')
} else if (marks >= 75) {
  print('Grade B')
} else {
  print('Grade C')
}

ifelse() फ़ंक्शन

ifelse() एक वेक्टराइज़्ड फ़ंक्शन है जो एक ही लाइन में निर्णय ले सकता है।

x <- c(10, 4, 8, 2)
ifelse(x > 5, 'Pass', 'Fail')

2️⃣ लूप्स (Loops)

लूप्स का उपयोग किसी कोड ब्लॉक को बार-बार चलाने के लिए किया जाता है। R में तीन प्रकार के लूप्स प्रचलित हैं:

  • for loop
  • while loop
  • repeat loop

for Loop

for लूप का उपयोग एक निश्चित सीमा तक दोहराव के लिए किया जाता है।

for (i in 1:5) {
  print(paste('Iteration:', i))
}

नेस्टेड for लूप

एक लूप के अंदर दूसरा लूप।

for (i in 1:3) {
  for (j in 1:2) {
    print(paste('i =', i, ', j =', j))
  }
}

while Loop

जब तक कोई शर्त सत्य रहती है, लूप चलता रहता है।

x <- 1
while (x <= 5) {
  print(x)
  x <- x + 1
}

repeat Loop

repeat लूप तब तक चलता है जब तक break स्टेटमेंट नहीं मिलता।

x <- 1
repeat {
  print(x)
  x <- x + 1
  if (x > 5) {
    break
  }
}

3️⃣ लूप नियंत्रण कथन

  • break: लूप को समाप्त करता है।
  • next: वर्तमान iteration को छोड़कर अगले पर जाता है।

break उदाहरण

for (i in 1:10) {
  if (i == 6) {
    break
  }
  print(i)
}

next उदाहरण

for (i in 1:5) {
  if (i == 3) {
    next
  }
  print(i)
}

4️⃣ वेक्टराइजेशन और लूप्स की तुलना

R में लूप्स की जगह वेक्टराइज्ड ऑपरेशन्स अधिक तेज़ और प्रभावी होते हैं। उदाहरण:

x <- 1:5
y <- x * 2  # Vectorized Operation

यह लूप की तुलना में तेज़ चलता है क्योंकि R कोड को इंटरप्रेटर लेवल पर ऑप्टिमाइज़ करता है।

5️⃣ apply() फैमिली फंक्शन्स

R में apply(), lapply(), sapply(), और tapply() जैसे फंक्शन्स लूप्स के विकल्प के रूप में उपयोग किए जाते हैं।

# apply() - for matrices
m <- matrix(1:9, nrow=3)
apply(m, 1, sum)

# lapply() - for lists
l <- list(a=1:5, b=6:10)
lapply(l, mean)

# sapply() - simplified version of lapply
sapply(l, mean)

6️⃣ नियंत्रण प्रवाह और लूप्स का वास्तविक उपयोग

  • डेटा क्लीनिंग — Missing values को संभालना।
  • रिपोर्ट जेनरेशन — बार-बार होने वाले कार्यों का स्वचालन।
  • मॉडल ट्रेनिंग — Iterative एल्गोरिद्म्स जैसे K-Means।
  • Simulation और Sampling।

7️⃣ त्रुटि हैंडलिंग (Error Handling)

try() और tryCatch() का उपयोग त्रुटियों को पकड़ने के लिए किया जाता है।

safe_divide <- function(x, y) {
  tryCatch({
    result <- x / y
    return(result)
  }, error = function(e) {
    print('Error occurred!')
  })
}

safe_divide(10, 0)

8️⃣ वास्तविक उदाहरण: Student Grade Processing

grades <- c(88, 76, 92, 45, 60)
for (mark in grades) {
  if (mark >= 90) {
    print('Grade A')
  } else if (mark >= 75) {
    print('Grade B')
  } else if (mark >= 50) {
    print('Grade C')
  } else {
    print('Fail')
  }
}

निष्कर्ष

R में नियंत्रण प्रवाह और लूप्स कोड के निष्पादन को लचीला और बुद्धिमान बनाते हैं। इनकी मदद से हम निर्णय आधारित लॉजिक और पुनरावृत्ति वाले कार्य आसानी से लागू कर सकते हैं। डेटा साइंस में ये संरचनाएँ ऑटोमेशन, डेटा प्रोसेसिंग, और मॉडल ट्रेनिंग के लिए अत्यंत आवश्यक हैं।

Related Post