مرکزی مواد پر جائیں
ماڈیول 3 · سبق 1 از 2کورس میں 5/10~12 min
ماڈیول اسباق (1/2)

تحریری افعال

R میں، فنکشنز فرسٹ کلاس شہری ہوتے ہیں (اپنے طور پر اشیاء) اور آپ کو اپنے کوڈ کو ماڈیولر، دوبارہ قابل استعمال، اور اچھی طرح سے منظم بلاکس میں ڈھانچے کی اجازت دیتے ہیں۔

فنکشن کی تعریف کرنا

فنکشن کی وضاحت کرنے کے لیے، function کلیدی لفظ استعمال کریں اور اسائنمنٹ آپریٹر <- کا استعمال کرتے ہوئے تخلیق شدہ آبجیکٹ کو متغیر (فنکشن کا نام) پر تفویض کریں۔

R
# Simple function definition
greet_user <- function() {
  print("Hello, User!")
}

# Invoking the function
greet_user()

پیرامیٹرز اور ریٹرن ویلیوز

فنکشنز ایک یا زیادہ پیرامیٹرز کو قبول کر سکتے ہیں۔ کسی قدر کو واضح طور پر واپس کرنے کے لیے، return() فنکشن استعمال کریں۔ اگر return() کو چھوڑ دیا جاتا ہے، تو R خود بخود فنکشن باڈی میں آخری تشخیص شدہ اظہار کی قدر واپس کر دے گا۔

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

پہلے سے طے شدہ دلائل

آپ کسی فنکشن کے پیرامیٹرز کے لیے ڈیفالٹ ویلیوز بتا سکتے ہیں۔ اگر فنکشن کی درخواست کرنے پر دلیل فراہم نہیں کی جاتی ہے، تو R ڈیفالٹ ویلیو استعمال کرے گا:

R
# 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):

R
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() جیسے فنکشنز کے ساتھ جوڑا بنایا جائے۔

جدید R میں (ورژن 4.1.0 کے بعد سے)، آپ کلاسک function(x) کے علاوہ شارٹ ہینڈ نحو \(x) کا استعمال کرتے ہوئے گمنام فنکشنز کی وضاحت کر سکتے ہیں:

R
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

خود ہی آزمائیں۔

ورزش#r.m3.l1.e1
کوششیں: 0لوڈ ہو رہا ہے…

ڈبل_ویلیو نامی فنکشن کی وضاحت کریں جو ایک ہی دلیل x کو قبول کرتا ہے اور واپسی () کا استعمال کرتے ہوئے اس کا ڈبل ​​(x * 2) واپس کرتا ہے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

Usa la sintassi: double_value <- function(x) { return(x * 2) }

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#r.m3.l1.e2
کوششیں: 0لوڈ ہو رہا ہے…

calculate_area نامی فنکشن کی وضاحت کریں جو دو دلائل کو قبول کرتا ہے: چوڑائی اور اونچائی۔ فنکشن کو واپسی () کا استعمال کرتے ہوئے اپنی مصنوعات کو واپس کرنا ہوگا۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

پیرامیٹرز کی چوڑائی اور اونچائی کے ساتھ فنکشن کی وضاحت کریں، اور چوڑائی * اونچائی واپس کریں۔

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#r.m3.l1.e3
کوششیں: 0لوڈ ہو رہا ہے…

calculate_tax نامی فنکشن کی وضاحت کریں جو مطلوبہ دلیل کی رقم اور 0.22 کی ڈیفالٹ قدر کے ساتھ اختیاری دلیل کی شرح کو قبول کرتا ہے۔ مصنوعات کی رقم * شرح واپس کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

USA: calculate_tax <- فنکشن(رقم، شرح = 0.22) { واپسی(رقم * شرح) }

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#r.m3.l1.e4
کوششیں: 0لوڈ ہو رہا ہے…

analyze_vector نامی فنکشن کی وضاحت کریں جو ایک ویکٹر v کو قبول کرتا ہے۔ فنکشن کو ایک فہرست واپس کرنی چاہیے جس میں دو عناصر ہوں جس کا نام sum (ویکٹر کا مجموعہ، sum(v) کے ساتھ شمار کیا جاتا ہے) اور len (ویکٹر کی لمبائی، لمبائی (v) کے ساتھ حساب کیا جاتا ہے)۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

نحو کا استعمال کریں: analyze_vector <- function(v) { return(list(sum = sum(v), len = length(v))) }

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش#r.m3.l1.e5
کوششیں: 0لوڈ ہو رہا ہے…

ویکٹر وی کو دیکھتے ہوئے، ہر عنصر کی قدر کو تین گنا کرنے کے لیے ایک گمنام فنکشن کے ساتھ sapply() فنکشن کا استعمال کریں (اسے 3 سے ضرب دیں)۔ نتیجہ کو تین گنا متغیر میں محفوظ کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

استعمال کریں: تین گنا <- saply(v, function(x) x * 3)

3 کوششوں کے بعد حل دستیاب ہے۔