मॉड्यूल पाठ (1/2)
लेखन कार्य
आर में, फ़ंक्शंस प्रथम श्रेणी के नागरिक हैं (वस्तुएं अपने आप में) और आपको अपने कोड को मॉड्यूलर, पुन: प्रयोज्य और सुव्यवस्थित ब्लॉकों में संरचित करने की अनुमति देती हैं।
किसी फ़ंक्शन को परिभाषित करना
किसी फ़ंक्शन को परिभाषित करने के लिए, function कीवर्ड का उपयोग करें और असाइनमेंट ऑपरेटर <- का उपयोग करके बनाए गए ऑब्जेक्ट को एक वेरिएबल (फ़ंक्शन नाम) पर असाइन करें:
# Simple function definition
greet_user <- function() {
print("Hello, User!")
}
# Invoking the function
greet_user()पैरामीटर और रिटर्न मान
फ़ंक्शन एक या अधिक पैरामीटर स्वीकार कर सकते हैं. किसी मान को स्पष्ट रूप से वापस करने के लिए, return() फ़ंक्शन का उपयोग करें। यदि return() को छोड़ दिया जाता है, तो R स्वचालित रूप से फ़ंक्शन बॉडी में अंतिम मूल्यांकन किए गए अभिव्यक्ति का मान लौटा देगा।
# Function that adds two numbers and returns the result
add_numbers <- function(a, b) {
sum_result <- a + b
return(sum_result)
}
total <- add_numbers(5, 7)
print(total) # Prints 12डिफ़ॉल्ट तर्क
आप किसी फ़ंक्शन के पैरामीटर के लिए डिफ़ॉल्ट मान निर्दिष्ट कर सकते हैं। यदि फ़ंक्शन लागू होने पर तर्क प्रदान नहीं किया जाता है, तो आर डिफ़ॉल्ट मान का उपयोग करेगा:
# The function uses a default discount rate of 10% (0.10)
apply_discount <- function(price, discount = 0.10) {
discounted_price <- price * (1 - discount)
return(discounted_price)
}
# Uses the default (10%)
print(apply_discount(100)) # Prints 90
# Specifies a custom discount (20%)
print(apply_discount(100, 0.20)) # Prints 80सूचियों के साथ एकाधिक मान लौटाना
चूँकि R में एक फ़ंक्शन केवल एक ऑब्जेक्ट को return() के माध्यम से सीधे लौटा सकता है, यदि हमें कई मान (संभवतः विभिन्न प्रकार या लंबाई के) वापस करने की आवश्यकता है, तो हम उन्हें एक सूची (list) के अंदर बंडल कर सकते हैं:
get_stats <- function(v) {
stats <- list(
mean_val = mean(v),
max_val = max(v)
)
return(stats)
}
results <- get_stats(c(10, 20, 30))
print(results$mean_val) # Prints 20अनाम फ़ंक्शन और sapply
किसी वेक्टर या सूची के तत्वों पर त्वरित परिवर्तन लागू करने के लिए sapply() जैसे फ़ंक्शंस के साथ जोड़े जाने पर अनाम फ़ंक्शंस (बिना नाम परिभाषित इनलाइन फ़ंक्शंस) बेहद उपयोगी होते हैं।
आधुनिक आर में (संस्करण 4.1.0 से आगे), आप क्लासिक function(x) के अलावा शॉर्टहैंड सिंटैक्स \(x) का उपयोग करके अज्ञात फ़ंक्शन को परिभाषित कर सकते हैं:
v <- c(1, 2, 3)
# Using sapply with a classic anonymous function
sapply(v, function(x) x^2) # 1 4 9
# Using sapply with shorthand syntax (R >= 4.1.0)
sapply(v, \(x) x^2) # 1 4 9खुद कोशिश करना
डबल_वैल्यू नामक एक फ़ंक्शन को परिभाषित करें जो एकल तर्क x को स्वीकार करता है और रिटर्न() का उपयोग करके अपना डबल (x * 2) लौटाता है।
संकेत दिखाएँ
उदाहरण के लिए: डबल_वैल्यू <- फ़ंक्शन(x) { रिटर्न(x * 2) }
3 प्रयासों के बाद समाधान उपलब्ध है
कैलकुलेट_एरिया नामक फ़ंक्शन को परिभाषित करें जो दो तर्क स्वीकार करता है: चौड़ाई और ऊंचाई। फ़ंक्शन को रिटर्न() का उपयोग करके अपना उत्पाद वापस करना होगा।
संकेत दिखाएँ
पैरामीटर चौड़ाई और ऊंचाई के साथ फ़ंक्शन को परिभाषित करें, और चौड़ाई * ऊंचाई लौटाएं।
3 प्रयासों के बाद समाधान उपलब्ध है
कैलकुलेट_टैक्स नामक एक फ़ंक्शन को परिभाषित करें जो 0.22 के डिफ़ॉल्ट मान के साथ एक आवश्यक तर्क राशि और एक वैकल्पिक तर्क दर स्वीकार करता है। उत्पाद राशि * दर लौटाएँ।
संकेत दिखाएँ
यूएसए: कैलकुलेट_टैक्स <- फ़ंक्शन (राशि, दर = 0.22) { वापसी (राशि * दर) }
3 प्रयासों के बाद समाधान उपलब्ध है
एनालिसिस_वेक्टर नामक एक फ़ंक्शन को परिभाषित करें जो वेक्टर वी को स्वीकार करता है। फ़ंक्शन को एक सूची वापस करनी होगी जिसमें योग नामक दो तत्व शामिल हों (वेक्टर का योग, योग (v) के साथ गणना की गई) और लेन (वेक्टर की लंबाई, लंबाई (v) के साथ गणना की गई)।
संकेत दिखाएँ
सिंटैक्स का उपयोग करें: विश्लेषण_वेक्टर <- फ़ंक्शन (v) { रिटर्न (सूची (योग = योग (v), लेन = लंबाई (v))) }
3 प्रयासों के बाद समाधान उपलब्ध है
वेक्टर v को देखते हुए, प्रत्येक तत्व के मान को तीन गुना करने के लिए एक अज्ञात फ़ंक्शन के साथ sapply() फ़ंक्शन का उपयोग करें (इसे 3 से गुणा करें)। परिणाम को वेरिएबल ट्रिपल में सहेजें।
संकेत दिखाएँ
उपयोग करें: तीन गुना <- sapply(v, function(x) x * 3)
3 प्रयासों के बाद समाधान उपलब्ध है