ভেক্টরের এলিমেন্টগুলোর নাম থাকতে পারে, আর এতে কখনও কখনও সেগুলো নিয়ে কাজ করা আরও সুবিধাজনক হয়ে ওঠে।
একটি ভেক্টরে নাম যোগ করার তিনটি উপায় আছে।
১) ভেক্টর তৈরির সময়
> work_days <- c(Mon = TRUE, Tue = TRUE, Wed = TRUE, Thu = TRUE, Fri = TRUE, Sat = FALSE, Sun = FALSE)
> work_days
Mon Tue Wed Thu Fri Sat Sun
TRUE TRUE TRUE TRUE TRUE FALSE FALSE
২) names()-এ একটি ক্যারেক্টার ভেক্টর অ্যাসাইন করে
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> names(months) <- month.abb
> months
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
31 28 31 30 31 30 31 31 30 31 30 31
৩) setNames() দিয়ে
> months <- c(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
> setNames(months, month.name)
January February March April May June July August September October November December
31 28 31 30 31 30 31 31 30 31 30 31
নাম আর দরকার না হলে NULL-এ সেট করে সেগুলো সরিয়ে ফেলা যায়।
> work_days
Mon Tue Wed Thu Fri Sat Sun
TRUE TRUE TRUE TRUE TRUE FALSE FALSE
> names(work_days) <- NULL
> work_days
[1] TRUE TRUE TRUE TRUE TRUE FALSE FALSE
unname() ফাংশনটিও একই কাজ করে, আর সম্ভবত আপনার উদ্দেশ্য আরও স্পষ্ট করে তোলে।
names() ফাংশন দিয়ে নাম সেট করা যায়, আবার নাম বের করাও যায়।
> names(months) <- month.abb
> names(months)[1:3]
[1] "Jan" "Feb" "Mar"
পজিশন ইনডেক্সের জায়গায় নাম ব্যবহার করা যায়, তবে এক্ষেত্রে কোটেশন দিতে হয়।
> months[c("Jul", "Aug")]
Jul Aug
31 31
এভাবে ইনডেক্সিং ঠিকভাবে কাজ করার জন্য নামগুলো যেন অনন্য হয় এবং কোনোটি যেন অনুপস্থিত না থাকে তা নিশ্চিত করা ভালো। তবে R অনন্যতা বাধ্যতামূলক করে না।
সাধারণ ভেক্টর অপারেশনগুলো আগের মতোই কাজ করে, আর যুক্তিসঙ্গত হলে নামগুলো সাধারণত সংরক্ষিত থাকে।
> months[months == 30]
Apr Jun Sep Nov
30 30 30 30
> sum(months)
[1] 365 # no meaningful names possible
vectors সহ অনেক R অবজেক্টের সাথে ইচ্ছেমতো অ্যাট্রিবিউট যুক্ত করা যায়। names অ্যাট্রিবিউট তার একটি উদাহরণ মাত্র, তবে বিশেষভাবে কমন ও গুরুত্বপূর্ণ একটি উদাহরণ।
বাস্তবে নাম কখনও কখনও ভেক্টরের জন্য কাজে লাগে, তবে খুব কমই অপরিহার্য। আরও জটিল গঠন যেমন lists ও dataframes-এর ক্ষেত্রে names-attribute অনেক বেশি গুরুত্বপূর্ণ হয়ে ওঠে, যা আমরা সামনের কনসেপ্টগুলোতে দেখব।