في R ، المصفوفة هي مجموعة من العناصر من نفس نوع البيانات ( numeric, character, or logical ) مرتبة في عدد ثابت من الصفوف والأعمدة. نظرًا لأنك تعمل فقط مع الصفوف والأعمدة ، فإن المصفوفة تسمى ثنائية الأبعاد two-dimensional .
يمكنك إنشاء مصفوفة في R باستخدام دالةmatrix() .
matrix(1:9, byrow = TRUE, nrow = 3)
حيث أن:
المعامل الأول هو مجموعة العناصر التي سيقوم R بتمثيلها في صفوف وأعمدة المصفوفة. هنا ، نستخدم 1: 9 وهو اختصار لـ c (1 ، 2 ، 3 ، 4 ، 5 ، 6 ، 7 ، 8 ، 9).
يشير المعامل byrow إلى أن المصفوفة مملوءة بالصفوف. إذا أردنا ملء المصفوفة بالأعمدة ، فإننا نضع byrow = FALSE.
يشير المعامل الثالثة إلى أن المصفوفة يجب أن تحتوي على ثلاثة صفوف.
تسمية المصفوفة
لمساعدتك على تذكر ما تم تخزينه في star_wars_matrix ، قد ترغب في إضافة أسماء الأفلام للصفوف. لا يساعدك هذا في قراءة البيانات فحسب ، بل من المفيد أيضًا تحديد عناصر معينة من المصفوفة.
على غرار المتجهات ، يمكنك إضافة أسماء لصفوف وأعمدة مصفوفة
أسماء rownames (my_matrix) <- row_names_vector
أسماء الأعمدة (my_matrix) <- col_names_vector
مضينا قدمًا وأعدنا لك متجهين: المنطقة والعناوين. ستحتاج إلى هذه المتجهات لتسمية أعمدة وصفوف star_wars_matrix ، على التوالي.
rownames(my_matrix) <- row_names_vector
colnames(my_matrix) <- col_names_vector
rowSums()
في R ، تقوم الدالة rowSums () بحساب إجماليات كل صف من المصفوفة بشكل ملائم. تنشئ هذه الوظيفة متجهًا جديدًا:
rowSums(my_matrix)
cbind () إضافة عمود للمصفموفة
في التمرين السابق ، قمت بحساب المتجه الذي يحتوي على إيصال شباك التذاكر العالمي لكل فيلم من أفلام Star Wars الثلاثة. ومع ذلك ، فإن هذا المتجه ليس بعد جزءًا من star_wars_matrix.
يمكنك إضافة عمود أو عدة أعمدة إلى مصفوفة باستخدام الدالة cbind () ، التي تدمج المصفوفات و / أو المتجهات معًا حسب العمود. فمثلا:
إضافة صف
الان يمكنك دمج مصفوفتان بالصفوف بإستخدام rbind ()
new_matrix=rbind(mat1,mat2
جمع عناصر مصفوفة بالصف أو بالعمود
تمامًا مثل cbind () has rbind () ، يحتوي colSums () على rowSums (). تحتوي مساحة العمل R الخاصة بك بالفعل على all_wars_matrix التي أنشأتها في التمرين السابق ؛ اكتب all_wars_matrix لإلقاء نظرة أخرى. دعنا الآن نحسب إجمالي إيرادات شباك التذاكر للملحمة بأكملها.
# all_wars_matrix is available in your workspace
all_wars_matrix
# Total revenue for US and non-US
total_revenue_vector <- colSums(all_wars_matrix)
# Print out total_revenue_vector
total_revenue_vector
اختيار عناصر المصفوفة
على غرار المتجهات ، يمكنك استخدام الأقواس المربعة [] لتحديد عنصر واحد أو عدة عناصر من المصفوفة. في حين أن المتجهات لها بعد واحد ، فإن المصفوفات لها بعدان. لذلك يجب عليك استخدام فاصلة لفصل الصفوف التي تريد تحديدها من الأعمدة. فمثلا:
my_matrix [1،2] يختار العنصر في الصف الأول والعمود الثاني.
ينتج عن my_matrix [1: 3،2: 4] مصفوفة بالبيانات الموجودة في الصفوف 1 و 2 و 3 والأعمدة 2 و 3 و 4.
إذا كنت تريد تحديد جميع عناصر صف أو عمود ، فلا حاجة إلى أي رقم قبل الفاصلة أو بعدها ، على التوالي:
my_matrix [, 1] يختار جميع عناصر العمود الأول.
my_matrix [1,] يختار جميع عناصر الصف الأول.
العودة إلى حرب النجوم بهذه المعرفة المكتسبة حديثًا! كما في التمرين السابق ، فإن all_wars_matrix متاحة بالفعل في مساحة العمل الخاصة بك.
# all_wars_matrix is available in your workspace
all_wars_matrix
# Select the non-US revenue for all movies
non_us_all <- all_wars_matrix[,2]
# Average non-US revenue
mean(non_us_all)
# Select the non-US revenue for first two movies
non_us_some <- all_wars_matrix[1:2,2]
# Average non-US revenue for first two movies
mean(non_us_some)
القليل من العمليات الحسابية باستخدام المصفوفات
على غرار ما تعلمته مع المتجهات ، تعمل العوامل القياسية مثل + ، - ، / ، * ، وما إلى ذلك بطريقة حكيمة على المصفوفات في R.
على سبيل المثال ، 2 * my_matrix تضرب كل عنصر من عناصر my_matrix في اثنين.
بصفتك محلل بيانات تم تعيينه حديثًا لشركة Lucasfilm ، فإن وظيفتك هي معرفة عدد الزوار الذين ذهبوا إلى كل فيلم لكل منطقة جغرافية. لديك بالفعل إجمالي أرقام الإيرادات في all_wars_matrix. افترض أن سعر التذكرة كان 5 دولارات. ببساطة قسمة أرقام شباك التذاكر على سعر التذكرة هذا يمنحك عدد الزوار.
# all_wars_matrix is available in your workspace
all_wars_matrix
# Estimate the visitors
visitors <- all_wars_matrix /5
# Print the estimate to the console
visitors
تمامًا مثل 2 * my_matrix ضربت كل عنصر من عناصر my_matrix بمقدار اثنين ، تنشئ my_matrix1 * my_matrix2 مصفوفة حيث يكون كل عنصر هو نتاج العناصر المقابلة في my_matrix1 و my_matrix2.
بعد الاطلاع على نتيجة التمرين السابق ، يشير الرئيس الكبير لوكاس إلى أن أسعار التذاكر ارتفعت بمرور الوقت. يطلب إعادة التحليل بناءً على الأسعار التي يمكن أن تجدها في Ticket_prices_matrix (المصدر: الخيال).
أولئك الذين هم على دراية بالمصفوفات يجب أن يلاحظوا أن هذا ليس ضرب المصفوفة القياسي الذي يجب أن تستخدم فيه٪ *٪ في R.
# all_wars_matrix and ticket_prices_matrix are available in your workspace
all_wars_matrix
ticket_prices_matrix
# Estimated number of visitors
visitors <- all_wars_matrix / ticket_prices_matrix
# US visitors
us_visitors <- visitors[,1]
# Average number of US visitors
mean(us_visitors)
العودة إلي Introduction to R (تلخيصات من DATA CAMP)