القوائم ، الصفيفات و المصفوفات

سنهتم في هذا المقال بتقديم أولى بُنى المعلومات الأساسية المعتمدة في آر و ذلك بعد أن قدمنا أشكالا بسيطة للمعطيات و المتغيرات في المقال السابق. سنتعرض هنا إلى المتجهات Vectors، القوائم ، المصفوفات ثم نعرج على بنى أكثر تركيبا و هي الجداول و أطر المعلومات.

فهرس المقال

1. القوائم (Lists) - الوصول إلى عناصر القائمة

2. الصفائف (Arrays) - الوصول إلى عناصر الصفيفة

3. المصفوفات (Matrices) - الوصول إلى عناصر المصفوفة

1. القوائم - Lists

القوائم عبارة عن بنية معلومات مهمة في آر. هي ذات بعد واحد و لكنها تسمح بتخزين معطيات من طبائع مختلفة. هي إذاً بنية بيانات غير متجانسة يمكنها تخزين معطيات رقمية ، حروفية ، منطقية كما يمكنها تخزين متجهات، قوائم بذاتها ، صفائف ، مصفوفات ،الخ. تعتبر القوائم ذات أهمية كبيرة في البرمجة على آر ، و هي مهمة كذلك لوظائف رئيسية على آر مثل حفظ معلومات بيئة العمل (مختلف المتغيرات التي تبقى مخزنة بذاكرة آر أثناء إنشاء مختلف الوظائف). كذلك ، فهي أصل لبنى معلومات أكثر تركيبا مثل أطر المعلومات التي سنتناولها أسفله (لمزيد من المعلومات اقرأ هذا المقال).

تكون الصيغة الرئيسية لإنشاء قائمة كما يلي :

my_list <-list(name1 = value1, name2 = value2, name3 = value3, etc...)

هنا هذا المثال:

family <- list(name ="محمد", wife="كريمة", no.children=4, child.ages=c(1,4,7,9))
family

my_list <- list(رقم = 42, نص = "مرحبًا", متجه = c(1, 2, 3))

my_list

هي بذلك تشبه القواميس dictionnaries على برنامج بايثون. بخلاف الصيغة الأولى أعلاه ، تمكن صياغة القوائم بأشكال مختلفة مثل مايلي :

# إنشاء قائمة تحتوي على أنواع بيانات مختلفة
list1<- list(4,'b',TRUE)
list2 <- list(list1, c(2,3,4),matrix(1:9,dim = c(3,3)))
list2


# طباعة القائمة
print(my_list)

الوصول إلى عناصر القائمة

يمكن الوصول إلى عناصر القائمة عبر ترتيب كل عنصر ضمن القائمة بالصيغة : my_list[[ترتيب]] ، أي بكتابة اسم القائمة و إتباعه بالرقم موضوعا بين وةج عارضتين [[]] أو عبر اسم المتغير الذي يحملها و ذلك بكتابة اسم القائمة متبوعا باسم المتغير المقصودا و مفصولا بعلامة $ بالصيغة التالية my_list$variable :

هنا بعض الأمثلة :

سنحاول الوصول إلى المتغير المسمى رقم ضمن القائمة list :

my_list$رقم  

أو سنحاول معرفة اسم الزوجة ، أي المتغير wife ضمن القائمة family :

family$wife

يمكن كذلك الوصول للمعلومات برقم ترتيبها في القائمة.

my_list[[2]]

يمكن كذلك بالنسبة للنسبة للقوائم المشكلة من متجهات ، صفائف ، مصفوفات أو غيرها من المتغيرات المعقدة ، الوصول إلى مكونات هاته المكونات ضمن القائمة. مثلا سنحاول الوصول إلى سن الابن رقم 2 ضمن المتغير child.agesفي القائمة family :

family[[4]][[2]]

2. الصفائف - Arrays (#الصفائف)

الصفائف في R هي هياكل بيانات متعددة الأبعاد تُستخدم لتنظيم البيانات في شكل أبعاد متعددة (مثل 2D، 3D). تدرج وفق الأمر ()array و تدرج فيها المعطيات المختلفة و التي يجب أن تكون من طبيعة واحدة (مثل المتجهات و عكس القوائم) كما تدرج فيها الأبعاد اللازمة ضمن متجه يوضع في الوسيطة dim.

هنا مثال لإنشاء صفيف ثلاثي البعد بأبعاد 3x3x2.

my_array <- array(1:18, dim = c(3, 3, 2))
print(my_array)

الوصول إلى عناصر الصفيف

يوصل إلى معطيات الصفيفة باعتماد ترتيب المعطى حسب إحداثياته : الصف - row ، عموده - column و بعده - dimension حسب الصيغة التالية :

my_array[2, 3, 1] # العنصر في الصف الثاني، العمود الثالث، في البعد الأول

3. المصفوفات - Matrices

المصفوفة هي صفيف ثنائي الأبعاد أي أنها حالة خاصة من الصفيفة. تحوي قيما نفس الطبيعة. تستعمل كثيرا في التحليل الإحصائي و سنرجع إليها ضمن مختلف التمارين المستقبلية. تنشأ بالصيغة matrix(). أنظر و طبق المثال التالي :

# إنشاء مصفوفة 3x3
my_matrix <- matrix(1:9, nrow = 3, ncol = 3)

# طباعة المصفوفة
print(my_matrix)

الوصول إلى عناصر المصفوفة

يمكن إظهار معطيات المصفوفة بتحديد إحداثيات المعطى أي ترتيب صفه و عموده موضوعة بين عارضتين [x,y]my_matrix حسب المثال الآتي :

my_matrix[1, 2] # العنصر في الصف الأول والعمود الثاني

رغم أهمية هاته البنى المعلوماتية الرئيسية إلا أننا سنحتاج بغرض التحليل الإحصائي إلى بنية معلومات مهمة نتطرق إليها في المقالات المقبلة و هي أطر البيانات.

كُتب في 07/03/2025