القوائم ، الصفيفات و المصفوفات
سنهتم في هذا المقال بتقديم أولى بُنى المعلومات الأساسية المعتمدة في آر و ذلك بعد أن قدمنا أشكالا بسيطة للمعطيات و المتغيرات في المقال السابق. سنتعرض هنا إلى المتجهات 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] # العنصر في الصف الأول والعمود الثاني
رغم أهمية هاته البنى المعلوماتية الرئيسية إلا أننا سنحتاج بغرض التحليل الإحصائي إلى بنية معلومات مهمة نتطرق إليها في المقالات المقبلة و هي أطر البيانات.