المسارات
/
R
R
/
المنهج
/
سمة الأسماء
سم

سمة الأسماء في R

1 تمرين

نبذة عن سمة الأسماء

يمكن أن تحتوي المتجهات على عناصر مسمّاة، وهذا يجعل التعامل معها أكثر ملاءمة في بعض الأحيان.

الإنشاء

هناك ثلاث طرق لإضافة أسماء إلى متجه.

  1. عند إنشاء المتجه
> 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 
  1. عبر إسناد متجه من السلاسل النصية إلى 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 
  1. باستخدام 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

موضوعات أكثر تقدمًا

يمكن أن تُرفق بكثير من كائنات R، بما فيها vectors، سمات عشوائية. وسِمة names مجرد مثال واحد، لكنه مثال شائع ومهم بشكل خاص.

عمليًا، تكون الأسماء مفيدة أحيانًا للمتجهات لكنها نادرًا ما تكون ضرورية. وتصبح سمة names-attribute أكثر أهمية بكثير في البنى الأكثر تعقيدًا مثل lists وdataframes، كما سنرى في مفاهيم مقبلة.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة

تعلّم سمة الأسماء