মডিউল পাঠ (1/2)
লেখার ফাংশন
R-এ, ফাংশনগুলি হল প্রথম শ্রেণীর নাগরিক (নিজের অধিকারে বস্তু) এবং আপনাকে আপনার কোডকে মডুলার, পুনঃব্যবহারযোগ্য এবং সুসংগঠিত ব্লকে গঠন করার অনুমতি দেয়।
একটি ফাংশন সংজ্ঞায়িত করা
একটি ফাংশন সংজ্ঞায়িত করতে, 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ডিফল্ট আর্গুমেন্ট
আপনি একটি ফাংশনের পরামিতিগুলির জন্য ডিফল্ট মান নির্দিষ্ট করতে পারেন। ফাংশনটি চালু করার সময় আর্গুমেন্ট প্রদান করা না হলে, 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):
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) ব্যবহার করে বেনামী ফাংশনগুলিকে সংজ্ঞায়িত করতে পারেন:
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নিজে চেষ্টা করে দেখুন
double_value নামের একটি ফাংশন সংজ্ঞায়িত করুন যা একটি একক আর্গুমেন্ট x গ্রহণ করে এবং return() ব্যবহার করে এর দ্বিগুণ (x * 2) প্রদান করে।
ইঙ্গিত দেখান
Usa la sintassi: double_value <- function(x) { return(x * 2) }
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
calculate_area নামের একটি ফাংশন সংজ্ঞায়িত করুন যা দুটি আর্গুমেন্ট গ্রহণ করে: প্রস্থ এবং উচ্চতা। ফাংশনটি অবশ্যই রিটার্ন() ব্যবহার করে তাদের পণ্য ফেরত দেবে।
ইঙ্গিত দেখান
প্যারামিটার প্রস্থ এবং উচ্চতা সহ ফাংশনটি সংজ্ঞায়িত করুন এবং প্রস্থ * উচ্চতা ফেরত দিন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
calculate_tax নামের একটি ফাংশন সংজ্ঞায়িত করুন যা একটি প্রয়োজনীয় আর্গুমেন্ট পরিমাণ এবং 0.22 এর ডিফল্ট মান সহ একটি ঐচ্ছিক যুক্তি হার গ্রহণ করে। পণ্যের পরিমাণ * হার ফেরত দিন।
ইঙ্গিত দেখান
ইউএসএ: calculate_tax <- ফাংশন(অ্যামাউন্ট, রেট = 0.22) { রিটার্ন(অ্যামাউন্ট * হার) }
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
analyze_vector নামের একটি ফাংশন সংজ্ঞায়িত করুন যা একটি ভেক্টর v গ্রহণ করে। ফাংশনটিকে অবশ্যই যোগ (ভেক্টরের যোগফল, যোগফল(v) দিয়ে গণনা করা হয়েছে) এবং লেন (ভেক্টরের দৈর্ঘ্য, দৈর্ঘ্য(v) দিয়ে গণনা করা হয়েছে) নামের দুটি উপাদান সম্বলিত একটি তালিকা দিতে হবে।
ইঙ্গিত দেখান
সিনট্যাক্স ব্যবহার করুন: analyze_vector <- function(v) { return(list(sum = sum(v), len = length(v))) }
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ভেক্টর v দেওয়া, প্রতিটি উপাদানের মান তিনগুণ করতে (এটিকে 3 দ্বারা গুণ করে) একটি বেনামী ফাংশন সহ sapply() ফাংশন ব্যবহার করুন। তিনগুণ ভেরিয়েবলে ফলাফল সংরক্ষণ করুন।
ইঙ্গিত দেখান
ব্যবহার করুন: তিনগুণ <- saply(v, function(x) x * 3)
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ