English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

الصفوف بلغة R

تقدم لغة 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