আর প্রোগ্রামিং ল্যাঙ্গুয়েজের ব্যাসিক কনসেফট গুলো

আর প্রোগ্রামিং ল্যাঙ্গুয়েজ নিয়ে এর আগে একটি লেখা লিখেছি। যেখানে আর প্রোগ্রামিং ও আর স্টুডিও সম্পর্কে লিখেছি। এই লেখাতে আর প্রোগ্রামিং এর ব্যাসিক কিছু কনসেফট নিয়ে লেখার চেষ্টা করেছি।

Hello World!

আর প্রোগ্রাম কমান্ড লাইন থেকেই রান করা যায়। পাইথন বা ঐরকম প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলোর মত। টার্মিনাল বা কমান্ড লাইনে গিয়ে R লিখে এন্টার প্রেস করলেই আর প্রোগ্রাম লেখার কনসোল চলে আসবে। এছাড়া ‘আর কনসোল’ ওপেন করে সরাসরি ‘আর প্রোগ্রাম’ লেখা যাবে। শুরু করি Hello World! দিয়ে।

print("Hello World!") 

print() ফাংশনের ভেতর যে কোন টেক্সট লিখে এন্টার করলে তা প্রিন্ট করে দিবে।

প্রোগ্রাম লেখা শেষে আর কনসোল থেকে বের হতে চাইলে quit() লিখে এন্টার প্রেস করলে বের হওয়া যাবে।

আর স্ক্রিপ্ট

আর প্রোগ্রাম কোন ফাইলে সেভ করে আমরা রান করতে পারি। আর প্রোগ্রামের এক্সটেনশন হচ্ছে .r। নিচের লাইনটি কোন ফাইলে লিখে তা সেভ করি। এ জন্য আমরা যে কোন কোড এডিটরই ব্যবহার করতে পারি।

print("Hello World!") 

রান করার জন্য কমান্ড লাইন বা টার্মিনালে গিয়ে Rscript file.r প্রেস করলেই তা এক্সিকিউট হবে।

কমেন্টস

কমেন্টস লেখার জন্য আর প্রোগ্রামিং এ # ব্যবহার করা হয়। যেমনঃ

# Hello World! Program in R.

ভ্যারিয়েবল

কোন ডেটা বা অবজেক্ট স্টোর করার জন্য আমরা ভ্যারিয়েবল ব্যবহার করা হয়। কোন ভ্যারিয়েবলে ডেটা এসাইন করার জন্য এসানমেন্ট অপারেটর (<-) ব্যবহার করা হয়।

যেমন

n <- 15 

যেখানে n এর ভ্যালু 15 সেট করা হয়েছে। উল্টো ভাবেও এসাইনমেন্ট অপারেটর ব্যবহার করা যায়। যেমনঃ

15 -> n 

অপারেটর

অন্যান্য ল্যাঙ্গুয়েজের মত আর প্রোগ্রামিং এর অপারেটর গুলো হচ্ছেঃ

  • অ্যারিথম্যাটিক অপারেটর
  •  রিলেশনাল বা কম্পারিজন অপারেটর
  •  লজিক্যাল অপারেটর
  •  অ্যাসাইনমেন্ট অপারেটর

অ্যারিথম্যাটিক অপারেটর

আর প্রোগ্রামিং এ নিচের অ্যারিথম্যাটিক অপারেশন গুলো করা যায়ঃ

  • যোগ: +
  • বিয়োগ: –
  •  গুণ: *
  •  ভাগ: /
  • এক্সপোনেন্ট: ^
  • মডূলাস: %%

 

যোগ, বিয়োগ, গুন ভাগ সম্পর্কে আমরা সবাই পরিচিত। এছাড়া রয়েছে এক্সপোনেন্ট। যেখানে 4^2 এর মানে হচ্ছে 42 বা 16।
মডুলো %% দিয়ে ভাগশেষ বের করা হয়। যেমন 5%%3 এর মান হবে 2।

কম্পারিজন অপারেটর

একটা ভ্যালুর সাথে আরেকটা ভ্যালুর তুলনার জন্য এই কম্পারিজন অপারেটর গুলো ব্যবহার করা হয়। এই অপারেটর গুলো হচ্ছেঃ

অপারেটর কাজ
< less than
> greater than
<= less than or equal to
>= greater than or equal to
== equal to each other
!= not equal to each other

যেমনঃ

x <- 9
y <- 99
print(x<y)

যা প্রিন্ট করবে [1] TRUE

লজিক্যাল অপারেটর

বুলিয়ান অপারেশন করার জন্য লজিক্যাল অপারেটর গুলো ব্যবহার করা হয়। অপারেটর গুলো হচ্ছেঃ

অপারেটর কাজ
! Logical NOT
& Element-wise logical AND
&& Logical AND
| Element-wise logical OR
|| Logical OR

অ্যাসাইনমেন্ট অপারেটর

ভ্যারিয়েবলে কোন ভ্যালু এসাইন করার জন্য এসানমেন্ট অপারেটর ব্যবহার করা হয়। এসানমেন্ট অপারেটর গুলো হচ্ছেঃ

অপারেটর কাজ
<-, <<-, = Leftwards assignment
->, ->> Rightwards assignment
n <- 15 

যেখানে n এর ভ্যালু 15 সেট করা হয়েছে।

উল্টো ভাবেও এসাইনমেন্ট অপারেটর ব্যবহার করা যায়। তার জন্য Rightwards অ্যাসাইনমেন্ট অপারেটর ব্যবহার করা হয়। যেমনঃ

 
15 -> n 

আমরা <- অথবা -> ছাড়া অন্য সাইন গুলো ও ব্যবহার করতে পারি ভ্যারিয়েবলে কোন ডেটা এসাইন করতে।

ব্যাসিক ডেটা টাইপ
আর প্রোগ্রামিং ল্যাঙ্গুয়েজের ব্যাসিক ডেটা টাইপ গুলো হচ্ছেঃ

  • Integers: সকল ন্যাচারাল নাম্বার হচ্ছে ইন্টিজার। যেমন 1,2,3..
  • Numerics: দশমিক নাম্বার, ইন্টিজার সবই হচ্ছে নিউমেরিকস।
  • Logical: বুলিয়ান ভ্যালু (TRUE অথবা FALSE)।
  •  Character: যে কোন টেক্সট অথবা স্ট্রিং হচ্ছে ক্যারেক্টার।

 

কোন একটা ডেটা টাইপের ক্লাস আমরা বের করতে পারি class(variable_name) দিয়ে। যেমনঃ

x <- 3.6
print(class(x))

ভেক্টর

ভেক্টর হচ্ছে ডেটা কন্টেইনার। যার মধ্যে আমরা যে কোন ডেটা রাখতে পারি। যেমন নিউম্যারিক, ক্যারেক্টার, লজিক্যাল ডেটা।

একের অধিক ইলিমেন্টের ভেক্টর তৈরি করার সময় কম্বাইন ফাংশন c() ব্যবহার করা হয়। কম্বাইন ফাংশনের ভেতর ভেক্টরের ইলিমেন্ট গুলো কমা দিয়ে সেপারেট করে রাখা হয়। যেমনঃ

n_v <- c(1, 2, 3) 
c_v <- c("a", "b", "c")

দুইটা ভেক্টর যোগ

দুইটা ভেক্টর যোগ করতে পারি আমরা এভাবেঃ

z <- x + y

দুইটা ভেক্টর যোগ করার সময় প্রথম ভ্যালুর সাথে প্রথম ভ্যালু, দ্বিতীয় ভ্যালুর সাথে দ্বিতীয় ভ্যালু এভাবে যোগ হয়। যেমনঃ

x <- c(2,4,6)
y <- c(1,3,5)
z <- x + y
print(z)

যা আউটপুট দিবেঃ [1] 3 7 11

ভেক্টরের সমষ্টি বা sum()

x <- c(2,4,6)
total <- sum(x)  
print(total)

যা আউটুট দিবে 12।

ভেক্টর থেকে একটা ইলিমেন্ট এক্সেস করা

x <- c(1,2,3,4,5)
y <- x[3]
print(y)

যেখানে আউটপুট পাবো 3। অন্যান্য অনেক গুলো প্রোগ্রামিং লায়ঙ্গুয়েজে ০ থেকে ইন্ডেক্সিং শুরু হলেও আর প্রোগ্রামিং এ ইন্ডেক্সিং শুরু হয় ১ থেকে।

ভেক্টর থেকে একের অধিক ইলিমেন্ট এক্সেস করা

x <- c(1,2,3,4,5)
y <-  x[c(1, 5)]

print(y)

এখানে আমরা ভেক্ট্ররের ১ এবং ৫ নং আইটেম এক্সেস করেছি। যা আউটপুট দিবে [1] 1 5।

এছাড়া একটা ইনডেক্স থেকে অন্য আরেকটা ইনডেক্স পর্যন্ত সব ইলিমেন্ট আমরা এভাবে এক্সেস করতে পারিঃ

x <- c(1,2,3,4,5)
y <-  x[c(1:4)]

print(y)

যা আউটপুট দিবেঃ [1] 1 2 3 4

লিস্ট

একাদিক টাইপের ডেটা এক সাথে রাখার জন্য লিস্ট ব্যবহার করা হয়। যেমনঃ

l <- list(c(1,2,3), 3.1416, "Hi there!")

এখন যদি এই লিস্ট প্রিন্ট করি, তাহলে নিচের মত আউটপুট দিবেঃ

print(l)

[[1]]
[1] 1 2 3

[[2]]
[1] 3.1416

[[3]]
[1] “Hi there!”

ম্যাট্রিক্স

ম্যাট্রিক্স বলতে আমরা গণিতে যা করেছি, তাই। রো এবং কলামে সাজানো একই টাইপের ডেটা কালেকশন। টু ডাইমেনশনাল অ্যারেও বলতে পারি আমরা। ম্যাট্রিক্স তৈরি করার জন্য matrix() ফাংশন ব্যবহার করা হয়।

m <- matrix(1:9, byrow = TEUE,  nrow = 3)
print(m)

উপরে আমরা 1-9 পর্যন্ত সংখ্যা গুলো দিয়ে 3*3 ম্যাটিক্স তৈরি করেছি। byrow=TRUE দিয়ে বলা হয়েছে ম্যাটিক্সটি রো অনুযায়ী পূরণ করতে। যদি কলাম অনুযায়ী পূরণ করতে চাই, তাহলে byrow = FALSE দিলেই তা কলাম অনুযায়ী পূরণ হবে। byrow আর্গুমেন্টটি অপশনাল। nrow দিয়ে কয়টা রো হবে ম্যাটিক্সে তা বলে দিয়েছি।

উপরের নাম্বার গুলো অটোমেটেড জেনারেট হয়েছে। আমরা চাইলে নিজের মত করে ডিফাইন করে দিতে পারি। যেমনঃ

m <- matrix(c(1,2,3,4),  byrow=FALSE, nrow = 2)
print(m)

উপরে আমরা একটি 2*2 ম্যাটিক্স তৈরি করেছি। যার ইলিমেন্ট গুলো আমরা ডিফাইন করে দিয়েছি। ভেক্টর ও আমরা এখানে ব্যবহার করতে পারব।

অ্যারে

ম্যাট্রিক্স হতে পারে টু ডাইমেনশনাল। কিন্তু অ্যারে হতে পারে মাল্টি ডাইমেনশনাল, যত ডাইমেনশন দরকার। অ্যারে তৈরি করতে array() ফাংশন ব্যবহার করা হয়।

নিচের প্রোগ্রামটি দেখিঃ

# Create two vectors 
v1 <- c(1,2,3)
v2  <- c(11,22,33,44,55,66)

# Create the array.
result <- array(c(v1,v2),dim = c(3,3,5))
print(result)

এখানে আমরা প্রথমে দুইটা ভেক্টর তৈরি করে নিয়েছি। এরপর এই দুইটা ভেক্টর ব্যবহার করে একটা অ্যারে তৈরি করেছি। যার মধ্যে রয়েছে ৫টা 3*3 ম্যাটিক্স। উপরের প্রোগ্রামটি রান করে এর আউটপুট দেখি। এরপর অ্যারে এর আর্গুমেন্ট গুলো পরিবর্তন করে করে কয়েকবার রান করলে কিভাবে ‘আর প্রোগ্রামিং’ এ অ্যারে কাজ করে, তা সম্পর্কে ধারণা পাওয়া যাবে। এছাড়া আমরা চাইলে আরো ভেক্টর ব্যবহার করতে পারি অ্যারে তৈরি করতে।

ডেটা ফ্রেম

ম্যাটিক্সে একই ডেটা টাইপের ডেটা আমরা রাখতে পারি। কিন্তু রিয়েল লাইফে অনেক কাজে দেখা যাবে আমাদের একই সাথে লজিক্যাল, নাম্বার, ক্যারেক্টার সব ধরনের ডেটাই স্টোর করতে হতে পারে। আর সব ধরনের ডেটা এক সাথে স্টোর করার জন্য রয়েছে ডেটা ফ্রেম।

ওয়ার্কিং ডিরেক্টরিঃ

ফাইল থেকে কোন কিছু পড়তে বা কোন ফাইলে কোন ডেটা সেভ করতে ওয়ার্কিং ডিরেক্টরির দরকার হয়। কোন ওয়ার্কিং ডিরেক্টরিতে রয়েছি, তা দেখা যায় getwd() দিয়ে। আর ওয়ার্কিং ডিরেক্টরি পরিবর্তন করা যায় setwd(“C:/projects”) বা setwd(“/home/-user/projects”) এভাবে। এছাড়া আরস্টুডিও তে গ্রাফিক্যালি ওয়ার্কিং ডিরেক্টরি পরিবর্তন করা যায়।

ডেটা ফাইল থেকে পড়ার পাশাপশি ইউজার থেকে ইনপুট নিতে পারি scan() ব্যবহার করে।

x <- scan()
print(x)

ডেটা তৈরিঃ

কোন প্রজেক্টে কাজ করার জন্য হয়তো আমাদের টেস্ট করার জন্য কিছু ডেটা তৈরি করে নিতে হতে পারে। যেমন 1 থেকে 100 পর্যন্ত সংখ্যা গুলো আমরা এভাবে তৈরি করতে পারিঃ

x <- 1:100 

এছাড়া আমরা চাইলে রিয়েল নাম্বারও জেনারেট করতে পারি এভাবেঃ

seq(1, 5, 0.5)

যা প্রিন্ট করলে পাবোঃ
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

এভাবেও আমরা সিকোয়েন্স তৈরি করতে পারিঃ

print(seq(length=100, from=1, to=5))

যা করবে কি, ১ থেকে ৫ এর মধ্যে ১০০টি সংখ্যা তৈরি করে দিবে।

আর প্রোগ্রামিং সম্পর্কে অনেক কিছু জানলাম। আর একটু জানার পরই হয়তো আমাদের গন্তব্য হবে ওয়ালস্ট্রিট! স্টক এক্সচেঞ্জের ডেটা এনালাইসিস করে বিলিয়নিয়ার হওয়ার সময় চলে এসেছে!

Leave a Reply