R এ ভেক্টরস, লিস্টস, এবং ম্যাট্রিক্সেস (Vectors, Lists, and Matrices)
R প্রোগ্রামিং ভাষায় বিভিন্ন ধরনের ডেটা স্ট্রাকচার ব্যবহার করা হয়, যার মধ্যে ভেক্টরস (vectors), লিস্টস (lists), এবং ম্যাট্রিক্সেস (matrices) অন্যতম। এগুলো ডেটা ম্যানিপুলেশন এবং বিশ্লেষণের জন্য অত্যন্ত গুরুত্বপূর্ণ। নিচে ভেক্টরস, লিস্টস এবং ম্যাট্রিক্সেস সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. ভেক্টর (Vectors)
ভেক্টর হল একটি একরৈখিক (one-dimensional) ডেটা স্ট্রাকচার যা একধরনের ডেটা টাইপ ধারণ করতে সক্ষম। R এ ভেক্টর তৈরি করতে c() ফাংশন ব্যবহার করা হয়।
ভেক্টরের বৈশিষ্ট্য:
- একক ধরনের ডেটা ধারণ করতে পারে (যেমন, শুধুমাত্র সংখ্যা, শুধুমাত্র স্ট্রিং ইত্যাদি)।
- একটি ভেক্টরের সব উপাদান একই ডেটা টাইপের হতে হবে।
উদাহরণ:
# ভেক্টর তৈরি
numbers <- c(1, 2, 3, 4, 5) # একটি নিউমেরিক ভেক্টর
print(numbers)
# ভেক্টরের উপাদান অ্যাক্সেস
print(numbers[1]) # প্রথম উপাদান (1)
# অন্য ধরণের ভেক্টর
names <- c("Alice", "Bob", "Charlie") # একটি চরিত্র ভেক্টর
print(names)ভেক্টরের অপারেশন:
ভেক্টরসের উপর গণনা করা যায় যেমন যোগফল, গুণফল ইত্যাদি।
# ভেক্টরের যোগফল
sum_vector <- numbers + 5
print(sum_vector) # প্রতিটি উপাদানে ৫ যোগ করা হয়েছে
# ভেক্টরের গুণফল
multiply_vector <- numbers * 2
print(multiply_vector) # প্রতিটি উপাদানকে ২ গুণ করা হয়েছে২. লিস্ট (Lists)
লিস্ট একটি বিশেষ ধরনের ডেটা স্ট্রাকচার যা একাধিক ধরনের ডেটা একসাথে ধারণ করতে পারে। এটি ভেক্টরের তুলনায় আরও বেশি নমনীয়, কারণ এক লিস্টে আপনি বিভিন্ন ধরনের ডেটা টাইপ যেমন সংখ্যা, স্ট্রিং, ভেক্টর, ডেটাফ্রেম ইত্যাদি রাখতে পারেন।
লিস্টের বৈশিষ্ট্য:
- এক লিস্টে বিভিন্ন ধরনের ডেটা থাকতে পারে (যেমন সংখ্যা, চরিত্র, লজিক্যাল, ভেক্টর, ম্যাট্রিক্স, ডেটাফ্রেম ইত্যাদি)।
- এটি একাধিক ডেটা টাইপ ধারণ করতে সক্ষম।
উদাহরণ:
# লিস্ট তৈরি
person <- list(name = "Alice", age = 25, scores = c(90, 80, 85))
print(person)
# লিস্টের উপাদান অ্যাক্সেস
print(person$name) # নাম অ্যাক্সেস
print(person$age) # বয়স অ্যাক্সেস
print(person$scores) # স্কোর অ্যাক্সেসলিস্টের অন্যান্য অপারেশন:
# লিস্টের উপাদান যুক্ত করা
person$address <- "123 Street"
print(person)
# লিস্টের উপাদান সরানো
person$address <- NULL
print(person)৩. ম্যাট্রিক্স (Matrices)
ম্যাট্রিক্স হল দুটি মাত্রার (two-dimensional) ডেটা স্ট্রাকচার, যা সারি (row) এবং স্তম্ভ (column) ধারণ করতে সক্ষম। R এ ম্যাট্রিক্স তৈরি করতে matrix() ফাংশন ব্যবহার করা হয়।
ম্যাট্রিক্সের বৈশিষ্ট্য:
- একটি ম্যাট্রিক্সে একধরনের ডেটা থাকতে হবে (যেমন শুধুমাত্র সংখ্যা বা শুধুমাত্র স্ট্রিং)।
- এটি সারি এবং স্তম্ভ দ্বারা গঠিত।
উদাহরণ:
# ম্যাট্রিক্স তৈরি
mat <- matrix(1:9, nrow = 3, ncol = 3) # ৩ সারি এবং ৩ স্তম্ভ
print(mat)
# ম্যাট্রিক্সের উপাদান অ্যাক্সেস
print(mat[1, 2]) # প্রথম সারি এবং দ্বিতীয় স্তম্ভের উপাদান (2)
# ম্যাট্রিক্সের সারি ও স্তম্ভ পরিবর্তন
mat[1, 1] <- 10
print(mat)ম্যাট্রিক্সের অপারেশন:
ম্যাট্রিক্সের উপর বিভিন্ন গণনা করা যায়, যেমন যোগফল, গুণফল ইত্যাদি। এছাড়া rowSums() এবং colSums() ব্যবহার করে সারি বা স্তম্ভের যোগফল বের করা যায়।
# ম্যাট্রিক্সের যোগফল
mat_sum <- mat + 5
print(mat_sum)
# সারি এবং স্তম্ভের যোগফল
row_sum <- rowSums(mat)
col_sum <- colSums(mat)
print(row_sum) # সারির যোগফল
print(col_sum) # স্তম্ভের যোগফলসারসংক্ষেপ
R প্রোগ্রামিং ভাষায় ভেক্টরস, লিস্টস এবং ম্যাট্রিক্সেস খুবই গুরুত্বপূর্ণ ডেটা স্ট্রাকচার:
- ভেক্টর (Vectors): এক মাত্রিক ডেটা স্ট্রাকচার, যা এক ধরনের ডেটা ধারণ করতে পারে (যেমন, সংখ্যার তালিকা)।
- লিস্ট (Lists): মাল্টি-ডাইমেনশনাল ডেটা ধারণ করে এবং এতে একাধিক ডেটা টাইপ থাকতে পারে।
- ম্যাট্রিক্স (Matrices): দুই মাত্রিক ডেটা স্ট্রাকচার, যা সারি এবং স্তম্ভের মাধ্যমে ডেটা ধারণ করে।
এই ডেটা স্ট্রাকচারগুলো ডেটা ম্যানিপুলেশন, পরিসংখ্যান বিশ্লেষণ, এবং অন্যান্য বিভিন্ন কাজে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Vectors এর ধারণা এবং তৈরি করা
Vector হল R প্রোগ্রামিং ভাষার একটি মৌলিক ডেটা স্ট্রাকচার, যা একই ধরনের মান বা উপাদানগুলো একত্রে সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি সাধারণত একমাত্রিক (1D) ডেটা স্ট্রাকচার হিসেবে কাজ করে, যেখানে সব উপাদানগুলির টাইপ সাধারণত একই হয়। Vectors R-এ পরিসংখ্যানগত বিশ্লেষণ এবং ডেটা ম্যানিপুলেশনের ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ।
Vectors এর ধারণা
R-এ vector এমন একটি ডেটা টাইপ যা একাধিক মান বা উপাদান একসঙ্গে সংরক্ষণ করে। এটি একমাত্র টাইপের (হোমোজেনিয়াস) ডেটা ধারণ করতে পারে, যেমন সব উপাদান গুলি হতে হবে সংখ্যার (numeric), চরিত্র (character), অথবা লজিক্যাল (logical)।
বিশেষত্ব:
- একমাত্র টাইপের উপাদান ধারণ করে।
- একই ধরনের উপাদানগুলিকে একটি সজ্জিত আকারে স্টোর করতে সাহায্য করে।
- একে আপনি সংখ্যার একটি তালিকা, ক্যাটাগরিক্যাল মান, অথবা বুলিয়ান (True/False) উপাদান হিসেবে ব্যবহার করতে পারেন।
Vectors তৈরি করা
R-এ vector তৈরি করার জন্য c() (combine) ফাংশন ব্যবহার করা হয়। এই ফাংশনটি একাধিক উপাদানকে একত্রিত করে একটি vector তৈরি করে।
১. Numeric Vector (সংখ্যা সম্বলিত ভেক্টর)
একটি নম্বরের vector তৈরি করতে c() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
num_vector <- c(1, 2, 3, 4, 5)
print(num_vector)এখানে num_vector একটি numeric vector, যার মধ্যে ১, ২, ৩, ৪, ৫ রয়েছে।
২. Character Vector (চরিত্র সম্বলিত ভেক্টর)
একটি character vector তৈরি করতে c() ফাংশনের মধ্যে স্ট্রিং (character) মানগুলি পাঠানো হয়।
উদাহরণ:
char_vector <- c("Apple", "Banana", "Cherry")
print(char_vector)এখানে char_vector একটি character vector, যার মধ্যে "Apple", "Banana", "Cherry" রয়েছে।
৩. Logical Vector (লজিক্যাল ভেক্টর)
লজিক্যাল মান TRUE বা FALSE ধারণ করে। আপনি একটি logical vector তৈরি করতে পারেন যেখানে মানগুলি লজিক্যাল হবে।
উদাহরণ:
log_vector <- c(TRUE, FALSE, TRUE, TRUE)
print(log_vector)এখানে log_vector একটি logical vector, যার মধ্যে TRUE, FALSE, TRUE, TRUE রয়েছে।
Vectors এর অন্যান্য বৈশিষ্ট্য
৪. Length of Vector (ভেক্টরের দৈর্ঘ্য)
R-এ vector এর দৈর্ঘ্য (number of elements) জানা খুবই সহজ। এর জন্য length() ফাংশন ব্যবহার করা হয়।
উদাহরণ:
length(num_vector) # এটি num_vector এর দৈর্ঘ্য ৫ রিটার্ন করবে৫. Vector এর উপাদান এক্সেস করা (Accessing Elements of Vector)
R-এ একটি vector এর উপাদান অ্যাক্সেস করতে ইন্ডেক্স (indexing) ব্যবহার করা হয়। R-এ ইনডেক্স ১ থেকে শুরু হয় (যথা, প্রথম উপাদানটির ইনডেক্স ১ হবে)।
উদাহরণ:
# প্রথম উপাদান অ্যাক্সেস করা
num_vector[1] # এটি ১ রিটার্ন করবে
# দ্বিতীয় থেকে চতুর্থ উপাদান অ্যাক্সেস করা
num_vector[2:4] # এটি ২, ৩, ৪ রিটার্ন করবে৬. Vector এ নতুন উপাদান যোগ করা (Adding Elements to a Vector)
c() ফাংশন দিয়ে একটি vector এর শেষে নতুন উপাদান যোগ করা সম্ভব।
উদাহরণ:
num_vector <- c(num_vector, 6)
print(num_vector) # এটি num_vector এর শেষে ৬ যোগ করবে৭. Vector এর উপাদান মুছে ফেলা (Removing Elements from a Vector)
আপনি NULL ব্যবহার করে vector থেকে উপাদান মুছে ফেলতে পারেন।
উদাহরণ:
num_vector <- num_vector[-3] # তৃতীয় উপাদান মুছে ফেলবে
print(num_vector) # এটি তৃতীয় উপাদানটি মুছে ফেলবেVector এর অন্যান্য কার্যক্রম
৮. Vector এর গাণিতিক কার্যক্রম (Mathematical Operations on Vectors)
R-এ vector গুলোর উপরে গাণিতিক অপারেশন করতে পারেন। এর মধ্যে যোগ, বিয়োগ, গুণফল, ভাগফল ইত্যাদি অন্তর্ভুক্ত।
উদাহরণ:
num_vector + 2 # প্রতিটি উপাদানের সাথে ২ যোগ করবে
num_vector * 2 # প্রতিটি উপাদানের সাথে ২ গুণ করবে৯. Logical Operations on Vectors
R-এ vectors এর মধ্যে logical অপারেশনও করা যায়, যেমন & (AND), | (OR), ! (NOT) ইত্যাদি।
উদাহরণ:
log_vector & TRUE # TRUE এর সাথে প্রতিটি উপাদান AND অপারেশন করবেসারসংক্ষেপ
R-এ Vector হলো একটি অত্যন্ত শক্তিশালী ডেটা স্ট্রাকচার যা একই ধরনের মান সংরক্ষণ করতে সাহায্য করে। c() ফাংশন ব্যবহার করে বিভিন্ন ধরনের vectors তৈরি করা যায়—যেমন numeric, character, এবং logical। Vector এর দৈর্ঘ্য, উপাদান এক্সেস, নতুন উপাদান যোগ করা, এবং উপাদান মুছে ফেলার মতো বিভিন্ন কার্যক্রম করা যায়। এই বৈশিষ্ট্যগুলির মাধ্যমে ডেটা সায়েন্স, পরিসংখ্যান এবং বিভিন্ন প্রোগ্রামিং কাজের জন্য ভেক্টর অত্যন্ত গুরুত্বপূর্ণ এবং ব্যবহারযোগ্য।
R এ Lists এর ব্যবহার এবং ম্যানিপুলেশন
R প্রোগ্রামিং ভাষায়, Lists হল এমন একটি ডেটা স্ট্রাকচার যা একাধিক ভ্যালু ধারণ করতে পারে। এটি অন্য ডেটা স্ট্রাকচার (যেমনঃ ভেক্টর, ডেটাফ্রেম, ম্যাট্রিক্স) এর তুলনায় আরও বেশি নমনীয়, কারণ এটি একাধিক ভিন্ন ধরনের ডেটা একসাথে রাখতে সক্ষম। একটি লিস্টে সংখ্যার পাশাপাশি স্ট্রিং, লজিক্যাল ভ্যালু, অন্যান্য লিস্ট, এমনকি ফাংশনও থাকতে পারে।
১. Lists কি?
R-এ লিস্ট হল এমন একটি ডেটা স্ট্রাকচার, যা ভিন্ন ভিন্ন ধরনের ডেটা (যেমন, স্ট্রিং, সংখ্যা, ভেক্টর, ডেটাফ্রেম ইত্যাদি) একত্রে ধারণ করতে পারে। এটি একাধিক ডেটা টাইপের উপাদান রাখতে সক্ষম, যা অন্য ডেটা স্ট্রাকচার যেমন ভেক্টর বা ম্যাট্রিক্সে সম্ভব নয়।
লিস্টের প্রতিটি উপাদানকে "এলিমেন্ট" বলা হয় এবং এগুলোর জন্য আলাদা আলাদা ডেটা টাইপ থাকতে পারে।
লিস্ট তৈরির উদাহরণ:
# একটি লিস্ট তৈরি করা
my_list <- list(123, "Hello", TRUE, c(1, 2, 3), list("sublist_element1", "sublist_element2"))- এখানে
my_listএকটি লিস্ট, যার মধ্যে রয়েছে একটি সংখ্যা (numeric), একটি স্ট্রিং (character), একটি লজিক্যাল মান (logical), একটি ভেক্টর (numeric vector), এবং একটি সাবলিস্ট (nested list)।
২. Lists এ ডেটা অ্যাক্সেস করা
লিস্টে থাকা ডেটাকে অ্যাক্সেস করার জন্য দুই ধরনের পদ্ধতি রয়েছে:
- ডবল ব্র্যাকেট
[[ ]]ব্যবহার করে:এটি সরাসরি লিস্টের উপাদান অ্যাক্সেস করার জন্য ব্যবহৃত হয়।
my_list[[1]] # প্রথম এলিমেন্ট (numeric 123) my_list[[2]] # দ্বিতীয় এলিমেন্ট ("Hello")
- একক ব্র্যাকেট
[ ]ব্যবহার করে:এটি লিস্টের একটি সাবলিস্ট বা একটি উপাদানকে অ্যাক্সেস করতে ব্যবহার করা হয়, কিন্তু এটি লিস্টের ভিতর পুরো উপাদান দেয়।
my_list[1] # প্রথম এলিমেন্ট একটি লিস্ট হিসেবে ফিরে আসবে: list(123)
নাম দিয়ে অ্যাক্সেস করা (যদি লিস্টে নাম থাকে):
আপনি যদি লিস্টে উপাদানগুলো নাম দেন, তবে আপনি সেগুলোকে নাম দিয়ে অ্যাক্সেস করতে পারবেন।my_list <- list(age = 25, name = "John", is_active = TRUE) my_list$name # "John"
৩. Lists এর ম্যানিপুলেশন
১. লিস্টে নতুন উপাদান যোগ করা
লিস্টে নতুন উপাদান যোগ করতে আপনি [[ ]] ব্যবহার করে নতুন উপাদান অ্যাসাইন করতে পারেন অথবা append() ফাংশন ব্যবহার করতে পারেন।
my_list[[6]] <- "New Element" # নতুন উপাদান যোগ করাঅথবা, append() ফাংশন:
my_list <- append(my_list, "Another Element")২. লিস্ট থেকে উপাদান মুছে ফেলা
লিস্ট থেকে উপাদান মুছে ফেলতে, আপনি NULL ব্যবহার করতে পারেন।
my_list[[3]] <- NULL # তৃতীয় উপাদান মুছে ফেলা৩. লিস্টের সাইজ চেক করা
লিস্টের সাইজ জানার জন্য length() ফাংশন ব্যবহার করা হয়।
length(my_list) # লিস্টের মোট উপাদানের সংখ্যা৪. লিস্টের উপাদান পরিবর্তন
লিস্টের একটি উপাদান পরিবর্তন করতে আপনি নির্দিষ্ট ইনডেক্স ব্যবহার করে নতুন মান অ্যাসাইন করতে পারেন।
my_list[[2]] <- "World" # দ্বিতীয় উপাদান পরিবর্তন৫. লিস্টের উপাদানগুলো একসাথে একত্রিত করা (Flattening)
আপনি যদি একটি লিস্টের সব উপাদান একত্রে একে একে অ্যাক্সেস করতে চান, তবে unlist() ফাংশন ব্যবহার করতে পারেন।
unlist(my_list)এটি সমস্ত উপাদানকে একক ভেক্টরে রূপান্তরিত করবে।
৬. লিস্টের নাম পরিবর্তন
আপনি লিস্টের উপাদানের নাম পরিবর্তন করতে পারেন।
names(my_list) <- c("num", "text", "logical", "vector", "nested_list")এখন my_list$num, my_list$text ইত্যাদি দিয়ে আপনি উপাদানগুলো অ্যাক্সেস করতে পারবেন।
৪. Nested Lists (নেস্টেড লিস্ট)
R-এ লিস্টের ভিতরে লিস্ট থাকতে পারে, যাকে nested list বলা হয়। এটি একটি লিস্টের উপাদান হিসেবে আরেকটি লিস্ট ধারণ করে।
Nested List তৈরি করার উদাহরণ:
nested_list <- list(
person = list(name = "John", age = 25),
status = list(is_active = TRUE, role = "Admin")
)- এখানে
nested_listএকটি লিস্ট, যার মধ্যে দুটি সাবলিস্ট রয়েছে:personএবংstatus।
Nested List থেকে ডেটা অ্যাক্সেস করা:
nested_list$person$name # "John"
nested_list$status$is_active # TRUEসারসংক্ষেপ
- Lists হল R এর একটি শক্তিশালী ডেটা স্ট্রাকচার, যা একাধিক ধরনের ডেটা ধারণ করতে পারে। এটি একাধিক ভিন্ন ডেটা টাইপের উপাদান ধারণ করতে সক্ষম।
- লিস্টের উপাদান অ্যাক্সেস করতে
[[ ]]বা[ ]ব্যবহার করা হয়, এবং নাম দিয়ে অ্যাক্সেস করতে আপনি$চিহ্ন ব্যবহার করতে পারেন। - লিস্টের উপাদান ম্যানিপুলেট করতে আপনি নতুন উপাদান যোগ, উপাদান মুছে ফেলা, সাইজ চেক করা, বা উপাদান পরিবর্তন করতে পারেন।
- Nested Lists: একটি লিস্টের মধ্যে অন্য একটি লিস্ট থাকলে সেটি nested list হয়, যা আরও উন্নত ডেটা সংগঠনে সহায়ক।
এভাবে, R-এ লিস্ট ব্যবহার এবং ম্যানিপুলেশন করতে পারেন, যা আপনার ডেটা হ্যান্ডলিংয়ের কাজকে আরও সহজ এবং নমনীয় করে তোলে।
R প্রোগ্রামিংয়ে Matrices তৈরি এবং Matrix Operations
R প্রোগ্রামিংয়ে Matrix হল একটি দুই-ভিত্তিক ডেটা স্ট্রাকচার, যেখানে সমান আকারের সারি এবং কলামের মধ্যে উপাদানগুলি রাখা হয়। এটি গাণিতিক এবং পরিসংখ্যানিক অপারেশনগুলি সহজে করতে সহায়তা করে। R-এ মেট্রিক্স তৈরির জন্য বিভিন্ন ফাংশন এবং অপারেশনস আছে। নিচে মেট্রিক্স তৈরির পদক্ষেপ এবং বিভিন্ন মেট্রিক্স অপারেশনস আলোচনা করা হলো।
১. Matrix তৈরি (Creating Matrices)
R-এ মেট্রিক্স তৈরি করতে matrix() ফাংশন ব্যবহার করা হয়। এটি একটি ভেক্টর বা একটি মানকে দুটি মাত্রায় (rows এবং columns) সাজায়।
matrix() ফাংশন:
matrix(data, nrow, ncol, byrow = FALSE, dimnames = NULL)ব্যাখ্যা:
data: মেট্রিক্সের জন্য উপাদানগুলি (ভেক্টর আকারে)।nrow: সারির সংখ্যা।ncol: কলামের সংখ্যা।byrow: যদি TRUE হয়, উপাদানগুলি সারি অনুসারে সাজানো হবে। ডিফল্ট FALSE, যেখানে উপাদানগুলি কলাম অনুসারে সাজানো হয়।dimnames: মেট্রিক্সের জন্য নাম (অপশনাল)।
উদাহরণ ১: একটি সাধারণ মেট্রিক্স তৈরি
# 2x3 মেট্রিক্স তৈরি (2 সারি, 3 কলাম)
m <- matrix(1:6, nrow = 2, ncol = 3)
print(m)আউটপুট:
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6উদাহরণ ২: সারি অনুসারে উপাদান সাজানো
# 2x3 মেট্রিক্স তৈরি, উপাদানগুলি সারি অনুসারে সাজানো
m2 <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
print(m2)আউটপুট:
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6২. Matrix Operations (মেট্রিক্স অপারেশনস)
R-এ মেট্রিক্সের উপর বিভিন্ন ধরনের অপারেশন করা যায়, যেমন অ্যাডিশন, সাবট্র্যাকশন, মাল্টিপ্লিকেশন, ট্রান্সপোজ, ডিটারমিন্যান্ট, ইনভার্স ইত্যাদি। নিচে কিছু সাধারণ মেট্রিক্স অপারেশন দেওয়া হল।
১. Matrix Addition (মেট্রিক্স যোগফল)
মেট্রিক্স যোগ করতে, দুটি মেট্রিক্সের আকার (rows এবং columns) একেবারে মিলে যেতে হবে। মেট্রিক্স যোগ করতে + অপারেটর ব্যবহার করা হয়।
# দুটি মেট্রিক্স যোগফল
m1 <- matrix(1:6, nrow = 2, ncol = 3)
m2 <- matrix(6:1, nrow = 2, ncol = 3)
sum_matrix <- m1 + m2
print(sum_matrix)আউটপুট:
[,1] [,2] [,3]
[1,] 7 5 5
[2,] 8 6 6২. Matrix Subtraction (মেট্রিক্স বিয়োগফল)
মেট্রিক্স বিয়োগ করতে, দুটি মেট্রিক্সের আকার মিলিয়ে - অপারেটর ব্যবহার করা হয়।
# দুটি মেট্রিক্স বিয়োগফল
difference_matrix <- m1 - m2
print(difference_matrix)আউটপুট:
[,1] [,2] [,3]
[1,] -5 -1 1
[2,] -4 0 2৩. Matrix Multiplication (মেট্রিক্স গুণফল)
মেট্রিক্স গুণফল করার জন্য %*% অপারেটর ব্যবহার করা হয়। মেট্রিক্স গুণফলের জন্য প্রথম মেট্রিক্সের কলামের সংখ্যা দ্বিতীয় মেট্রিক্সের সারির সংখ্যা সঙ্গে মিলে যেতে হবে।
# দুটি মেট্রিক্স গুণফল
product_matrix <- m1 %*% t(m2) # m2 এর ট্রান্সপোজ (t(m2))
print(product_matrix)আউটপুট:
[,1] [,2]
[1,] 22 28
[2,] 28 40৪. Matrix Transposition (মেট্রিক্স ট্রান্সপোজ)
মেট্রিক্স ট্রান্সপোজে সারি এবং কলাম পরিবর্তন হয়ে যায়। t() ফাংশন ব্যবহার করে মেট্রিক্সের ট্রান্সপোজ করা যায়।
# মেট্রিক্স ট্রান্সপোজ
transpose_matrix <- t(m1)
print(transpose_matrix)আউটপুট:
[,1] [,2]
[1,] 1 3
[2,] 2 4
[3,] 3 5৫. Matrix Determinant (মেট্রিক্স ডিটারমিন্যান্ট)
মেট্রিক্সের ডিটারমিন্যান্ট বের করার জন্য det() ফাংশন ব্যবহার করা হয়।
# মেট্রিক্সের ডিটারমিন্যান্ট
det_matrix <- det(m1)
print(det_matrix)আউটপুট:
[1] 0(এটি একটি ২x৩ মেট্রিক্স, তাই ডিটারমিন্যান্টের মান ০ হবে)
৬. Matrix Inverse (মেট্রিক্স ইনভার্স)
মেট্রিক্সের ইনভার্স বের করার জন্য solve() ফাংশন ব্যবহার করা হয়। ইনভার্স শুধুমাত্র বর্গাকার মেট্রিক্সের জন্য সম্ভব (যা সারি এবং কলামের সংখ্যা সমান)।
# বর্গাকার মেট্রিক্স তৈরি
m3 <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)
# ইনভার্স বের করা
inverse_matrix <- solve(m3)
print(inverse_matrix)আউটপুট:
[,1] [,2]
[1,] -2 1
[2,] 1.5 -0.5সারসংক্ষেপ
- মেট্রিক্স তৈরি:
matrix()ফাংশন ব্যবহার করে মেট্রিক্স তৈরি করা হয়, যেখানেnrowএবংncolআর্গুমেন্ট ব্যবহার করে সারি এবং কলামের সংখ্যা নির্ধারণ করা হয়। - মেট্রিক্স অপারেশনস: R-এ মেট্রিক্সের উপর বিভিন্ন অপারেশন করা যায়:
- যোগফল (
+) - বিয়োগফল (
-) - গুণফল (
%*%) - ট্রান্সপোজ (
t()) - ডিটারমিন্যান্ট (
det()) - ইনভার্স (
solve())
- যোগফল (
এই অপারেশনগুলো গাণিতিক বিশ্লেষণ, পরিসংখ্যান, এবং মেশিন লার্নিংয়ের জন্য খুবই গুরুত্বপূর্ণ। R এর মেট্রিক্স ফাংশনগুলি সুনির্দিষ্ট এবং সঠিক গণনা করার জন্য একটি অত্যন্ত শক্তিশালী টুল সরবরাহ করে।
R প্রোগ্রামিং: Indexing এবং Subsetting Vectors, Lists, এবং Matrices
R প্রোগ্রামিং ভাষায় ডেটা কাঠামোগুলির (data structures) মধ্যে vectors, lists, এবং matrices খুবই গুরুত্বপূর্ণ। এগুলোর মধ্যে indexing এবং subsetting করে আপনি নির্দিষ্ট মান বা উপাদান বের করতে পারেন, যা ডেটা সায়েন্স, পরিসংখ্যান, এবং মেশিন লার্নিংয়ের জন্য অত্যন্ত প্রয়োজনীয়।
নিচে আমরা indexing এবং subsetting এর প্রক্রিয়া এবং উদাহরণ দেখবো।
১. Indexing এবং Subsetting Vectors
Vectors হলো R এর একটি মৌলিক ডেটা কাঠামো যা এক ধরনের উপাদান ধারণ করে। Vectors কে একক ডেটা টাইপের (যেমন সংখ্যামূলক, ক্যারেক্টর ইত্যাদি) উপাদানগুলির অ্যারে হিসেবে ভাবা যেতে পারে।
Vectors এর Indexing:
- R এ vector এর প্রথম উপাদানটি ১ থেকে শুরু হয়, অর্থাৎ R ১ ভিত্তিক ইনডেক্সিং ব্যবহার করে।
উদাহরণ:
# একটি নম্বরের ভেক্টর তৈরি
v <- c(10, 20, 30, 40, 50)
# প্রথম উপাদান অ্যাক্সেস করা
v[1] # আউটপুট হবে 10
# তৃতীয় উপাদান অ্যাক্সেস করা
v[3] # আউটপুট হবে 30Vectors এর Subsetting:
- আপনি এক বা একাধিক উপাদান বের করতে পারেন, কিংবা কিছু উপাদান বাদ দিয়েও বের করতে পারেন।
# একাধিক উপাদান সিলেক্ট করা
v[c(1, 3)] # আউটপুট হবে 10 এবং 30
# ২ থেকে ৪ পর্যন্ত উপাদান বের করা
v[2:4] # আউটপুট হবে 20 30 40
# বাদ দেওয়া উপাদান নির্বাচন করা
v[-2] # আউটপুট হবে 10 30 40 50 (দ্বিতীয় উপাদান বাদ দেওয়া হয়েছে)২. Indexing এবং Subsetting Lists
Lists হলো একটি আরও জটিল ডেটা কাঠামো, যেখানে বিভিন্ন ধরনের ডেটা টাইপ (যেমন, সংখ্যা, স্ট্রিং, ভেক্টর, ডেটাফ্রেম ইত্যাদি) একসাথে রাখা যেতে পারে। এটি ডেটা সংগঠিত করার জন্য খুবই কার্যকরী।
Lists এর Indexing:
- Lists এ আপনি
[[ ]]ব্যবহার করে কোনো উপাদান বা এলিমেন্ট বের করতে পারেন, আর$ব্যবহার করে নির্দিষ্ট নামের উপাদান বের করা যায়।
উদাহরণ:
# একটি list তৈরি
my_list <- list(name = "John", age = 30, scores = c(90, 80, 70))
# list এর প্রথম উপাদান অ্যাক্সেস করা
my_list[[1]] # আউটপুট হবে "John"
# নামের মাধ্যমে উপাদান অ্যাক্সেস করা
my_list$name # আউটপুট হবে "John"
# list এর তৃতীয় উপাদান অ্যাক্সেস করা
my_list[[3]] # আউটপুট হবে 90 80 70Lists এর Subsetting:
- আপনি একাধিক উপাদান সিলেক্ট করতে পারেন।
# একাধিক উপাদান সিলেক্ট করা
my_list[c(1, 2)] # আউটপুট হবে একটি নতুন list যার মধ্যে name এবং age থাকবে৩. Indexing এবং Subsetting Matrices
Matrices হলো একটি দুই-মাত্রিক ডেটা কাঠামো, যেখানে rows এবং columns থাকে। মেট্রিক্সে ডেটার একাধিক উপাদান থাকে, এবং আপনি রো এবং কলামের মাধ্যমে তাদের অ্যাক্সেস করতে পারেন।
Matrices এর Indexing:
- আপনি
[]ব্যবহার করে matrix এর নির্দিষ্ট উপাদান বের করতে পারেন। এখানে প্রথম ইনডেক্সটি রো এবং দ্বিতীয় ইনডেক্সটি কলাম প্রতিনিধিত্ব করে।
উদাহরণ:
# একটি ৩x৩ মেট্রিক্স তৈরি
m <- matrix(1:9, nrow = 3, ncol = 3)
# মেট্রিক্সের প্রথম রো এবং দ্বিতীয় কলাম
m[1, 2] # আউটপুট হবে 2
# মেট্রিক্সের দ্বিতীয় রো এবং প্রথম কলাম
m[2, 1] # আউটপুট হবে 4Matrices এর Subsetting:
- আপনি একটি রো বা কলাম সিলেক্ট করতে পারেন।
# দ্বিতীয় রো
m[2, ] # আউটপুট হবে 4 5 6 (দ্বিতীয় রো)
# তৃতীয় কলাম
m[, 3] # আউটপুট হবে 3 6 9 (তৃতীয় কলাম)- আপনি নির্দিষ্ট রো এবং কলাম বেছে নিতে পারেন।
# প্রথম এবং দ্বিতীয় রো, এবং দ্বিতীয় কলাম থেকে উপাদান সিলেক্ট করা
m[1:2, 2] # আউটপুট হবে 2 5সারসংক্ষেপ
- Indexing: কোডে নির্দিষ্ট উপাদান অ্যাক্সেস করার জন্য ইনডেক্স ব্যবহার করা হয়। R ১ ভিত্তিক ইনডেক্সিং ব্যবহার করে, অর্থাৎ প্রথম উপাদানটি ১ থেকে শুরু হয়।
- Subsetting: এর মাধ্যমে আপনি এক বা একাধিক উপাদান বা একটি নির্দিষ্ট রেঞ্জ থেকে ডেটা নির্বাচন করতে পারেন।
Vectors:
v[1]: প্রথম উপাদান।v[c(1, 3)]: একাধিক উপাদান।
Lists:
my_list[[1]]: প্রথম উপাদান।my_list$name: নামের মাধ্যমে উপাদান অ্যাক্সেস করা।
Matrices:
m[1, 2]: প্রথম রো এবং দ্বিতীয় কলাম।m[2, ]: দ্বিতীয় রো।
এই উপাদানগুলো ডেটা সায়েন্স, পরিসংখ্যান এবং মেশিন লার্নিংয়ের কাজগুলোতে অত্যন্ত উপকারী।
Read more