English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
تقدم لغة R نوع مصفوفة لدراسة الجبر الخطي، وتبدو هذه الهيكلية مشابهة جدًا لأجهزة التجميع الثنائية في لغات أخرى، ولكن تقدم R دعم عمليات المصفوفة على مستوى اللغة.
يمكن أن تكون العناصر في المصفوفة أرقامًا أو علامات أو معادلات رياضية.
مصفوفة MxN هي مجموعة من M صف (row) و N عمود (column)تمثل العناصر في شكل مصفوفة مستطيلة.
هذه مصفوفة من 6 عنصر تتكون من 2 صف و 3 عمود:
يمكن استخدام دالة matrix في لغة R لإنشاء مصفوفات، ويكون نموذج الجملة كالتالي:
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
شرح المعلمات:
data م向量، بيانات المصفوفة
nrow عدد الصفوف
ncol عدد الأعمدة
byrow قيمة منطقية، FALSE لترتيب العمودي، TRUE لترتيب الأفقي
dimname تعيين أسماء الصفوف والأعمدة
إنشاء مصفوفة رقمية:
# byrow TRUE عناصر مرتبة أفقياً M <- matrix(c(3:14), nrow = 4, byrow = TRUE) print(M) # Ebyrow FALSE عناصر مرتبة عموديًا N <- matrix(c(3:14), nrow = 4, byrow = FALSE) print(N) # تحديد أسماء الصفوف والأعمدة rownames = c("row1", "row2", "row3", "row4") colnames = c("col1", "col2", "col3") P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames)) print(P)
نتيجة تنفيذ الكود المقدم هي:
[,1] [,2] [,3] [1,] 3 4 5 [2,] 6 7 8 [3,] 9 10 11 [4,] 12 13 14 [,1] [,2] [,3] [1,] 3 7 11 [2,] 4 8 12 [3,] 5 9 13 [4,] 6 10 14 col1 col2 col3 row1 3 4 5 row2 6 7 8 row3 9 10 11 row4 12 13 14
يقدم لغة R دالة t() لتحويل النصائب من الصف إلى العمود والعكس.
على سبيل المثال، إذا كان لديك ماتريكس m × n، يمكنك تحويلها إلى ماتريكس n × m باستخدام دالة t().
# إنشاء ماتريكس 2 صفوف 3 عمود M = matrix( c(2,6,5,1,10,4), nrow = 2,ncol = 3,byrow = TRUE) print(M) [,1] [,2] [,3] [1,] 2 6 5 [2,] 1 10 4 # تحويل إلى 3 صفوف 2 عمود print(t(M))
نتيجة تنفيذ الكود المقدم هي:
[,1] [,2] [,3] [1,] 2 6 5 [2,] 1 10 4 [1] "-----التحويل-----" [,1] [,2] [1,] 2 1 [2,] 6 10 [3,] 5 4
إذا كنت ترغب في الحصول على عنصر من النصائب، يمكنك استخدام مؤشرات الصف والعمود للعنصر، مثل شكل التوازي.
# تحديد أسماء الصفوف والأعمدة rownames = c("row1", "row2", "row3", "row4") colnames = c("col1", "col2", "col3") # إنشاء ماتريكس P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames = list(rownames, colnames)) print(P) # الحصول على العنصر في الصف الأول والعمود الثالث print(P[1,3]) # الحصول على العنصر في الصف الرابع والعمود الثاني print(P[4,2]) # الحصول على الصف الثاني print(P[2,]) # الحصول على العمود الثالث print(P[,3])
نتيجة تنفيذ الكود المقدم هي:
col1 col2 col3 row1 3 4 5 row2 6 7 8 row3 9 10 11 row4 12 13 14 [1] 5 [1] 13 col1 col2 col3 6 7 8 row1 row2 row3 row4 5 8 11 14
يمكن إضافة أو طرح متغيرات النصائب التي لها حجم متساوي (عدد الصفوف والعمود) ببعضها البعض، حيث يتم إجراء عملية إضافة أو طرح على كل عنصر في نفس الموقع. عملية ضرب النصائب أكثر تعقيدًا. يمكن ضرب متغيرات النصائب إذا كان عدد الأعمدة في المتغير الأول يساوي عدد الصفوف في المتغير الثاني.
# إنشاء مصفوفة 2x3 matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2) print(matrix1) matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2) print(matrix2) # إضافة المتغيرات المرجعية result <- matrix1 + matrix2 cat(\"النتيجة المضافة:\",\n) print(result) # طرح نقطتين result <- matrix1 - matrix2 cat("نتيجة الطرح:", "\n") print(result)
نتيجة تنفيذ الكود المقدم هي:
[,1] [,2] [,3] [1,] 7 -1 2 [2,] 9 4 3 [,1] [,2] [,3] [1,] 6 0 3 [2,] 1 9 2 نتيجة الإضافة: [,1] [,2] [,3] [1,] 13 -1 5 [2,] 10 13 5 نتيجة الطرح: [,1] [,2] [,3] [1,] 1 -1 -1 [2,] 8 -5 1
# إنشاء مصفوفة 2x3 matrix1 <- matrix(c(7, 9, -1, 4, 2, 3), nrow = 2) print(matrix1) matrix2 <- matrix(c(6, 1, 0, 9, 3, 2), nrow = 2) print(matrix2) # ضرب نقطتين result <- matrix1 * matrix2 cat("نتيجة الضرب:", "\n") print(result) # قسمة نقطتين result <- matrix1 / matrix2 cat("نتيجة القسمة:", "\n") print(result)
نتيجة تنفيذ الكود المقدم هي:
[,1] [,2] [,3] [1,] 7 -1 2 [2,] 9 4 3 [,1] [,2] [,3] [1,] 6 0 3 [2,] 1 9 2 نتيجة الضرب: [,1] [,2] [,3] [1,] 42 0 6 [2,] 9 36 6 نتيجة القسمة: [,1] [,2] [,3] [1,] 1.166667 -Inf 0.6666667 [2,] 9.000000 0.4444444 1.5000000