إنشاء المصفوفات باستخدام matrix()
أنشئ المصفوفات بتحديد data وnrow وncol وbyrow.
إنشاء المصفوفات باستخدام matrix() درس مجاني في R Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في R Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة R Academy 4 دروس في المجموع.
ما المصفوفة في R؟
المصفوفة في R هي بنية بيانات ثنائية الأبعاد يجب أن تكون جميع عناصرها من النوع نفسه. تخيلوها كجدول يتكون من صفوف وأعمدة. وتُعد المصفوفات أساسية في الجبر الخطي ومعالجة الصور والحسابات الإحصائية.
# A simple 2x3 matrix
m <- matrix(1:6, nrow = 2, ncol = 3)
cat('A 2x3 matrix:
')
print(m)
cat('Dimensions:', dim(m), '
') # rows colsmatrix(data, nrow, ncol)
تأخذ الدالة matrix() متجهًا من البيانات وترتبه في صفوف وأعمدة. وبشكل افتراضي، تملأ R المصفوفة عمودًا تلو الآخر (بترتيب الأعمدة).
# Filled column by column (default)
m_col <- matrix(1:12, nrow = 3, ncol = 4)
cat('Column-filled 3x4 matrix:
')
print(m_col)
cat('Note: 1,2,3 fill the first COLUMN, not the first row
')byrow = TRUE للملء حسب الصفوف
يؤدي تعيين byrow = TRUE إلى ملء المصفوفة صفًا تلو الآخر. وغالبًا ما يكون ذلك أكثر سهولة عند التفكير في البيانات على شكل صفوف، مثل جدول البيانات.
# Filled row by row
m_row <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Row-filled 3x4 matrix:
')
print(m_row)
cat('Note: 1,2,3,4 fill the first ROW
')
# Verify byrow
m_check <- matrix(c(1,2,3,4,5,6), nrow = 2, byrow = TRUE)
print(m_check)إنشاء مصفوفة من متجه بيانات
يمكنكم إنشاء مصفوفة ذات معنى بتمرير متجه بيانات حقيقي. وستكرر R المتجه إذا كان أقصر من nrow * ncol، لكن من أفضل الممارسات توفير العدد الصحيح من العناصر تمامًا.
# Exam scores: 3 students, 4 subjects
scores_data <- c(88, 92, 75, 81, # Student 1
79, 85, 90, 73, # Student 2
95, 78, 82, 88) # Student 3
exam_matrix <- matrix(scores_data, nrow = 3, ncol = 4, byrow = TRUE)
rownames(exam_matrix) <- c('Alice', 'Bob', 'Carol')
colnames(exam_matrix) <- c('Math', 'Science', 'English', 'History')
print(exam_matrix)dim() — التحقق من الأبعاد
تعيد dim(m) متجهًا رقميًا طوله 2: عدد الصفوف ثم عدد الأعمدة. ويمكنكم أيضًا استخدام nrow(m) وncol(m) للحصول على كل بُعد على حدة.
m <- matrix(1:20, nrow = 4, ncol = 5)
cat('dim(m):', dim(m), '
') # 4 5
cat('nrow(m):', nrow(m), '
') # 4
cat('ncol(m):', ncol(m), '
') # 5
cat('Total elements:', length(m), '
') # 20is.matrix() — التحقق من النوع
تعيد is.matrix(x) القيمة TRUE إذا كان x مصفوفة. ويفيد ذلك في التحقق من صحة مدخلات الدوال. لاحظوا أن المصفوفة تُعد أيضًا مصفوفة متعددة الأبعاد (is.array() تعيد TRUE أيضًا).
m <- matrix(1:4, nrow = 2)
v <- c(1, 2, 3, 4)
cat('is.matrix(m):', is.matrix(m), '
') # TRUE
cat('is.matrix(v):', is.matrix(v), '
') # FALSE
cat('is.array(m): ', is.array(m), '
') # TRUE (matrix IS an array)
cat('class(m): ', class(m), '
')المصفوفة الصفرية ومصفوفة الوحدة
يمكنكم إنشاء مصفوفات خاصة بتكرار قيمة واحدة. تنشئ matrix(0, n, n) مصفوفة صفرية، بينما تنشئ diag(n) مصفوفة وحدة بحجم n x n (قيمها 1 على القطر و0 في المواضع الأخرى).
# Zero matrix 3x3
zero_mat <- matrix(0, nrow = 3, ncol = 3)
cat('Zero matrix:
')
print(zero_mat)
# Identity matrix 3x3
identity_mat <- diag(3)
cat('Identity matrix:
')
print(identity_mat)إنشاء مصفوفة من قيم مكررة
عندما يكون متجه البيانات أقصر من nrow * ncol، تقوم R بتكرار المتجه (بدءًا من أوله). وتحذركم R إذا كان طول المتجه لا يقسم حجم المصفوفة بالتساوي.
# Recycle a 2-element vector into a 4x4 matrix
alternate <- matrix(c(0, 1), nrow = 4, ncol = 4)
cat('Recycled 0,1 into 4x4:
')
print(alternate)
# Checkerboard effect: fills column by columnتوفير nrow أو ncol فقط
يكفي توفير أحد nrow أو ncol فقط، إذ تحسب R الآخر تلقائيًا استنادًا إلى طول البيانات. وإذا لم تنقسم البيانات بالتساوي، فستكرر R القيم وتصدر تحذيرًا.
# Only specify nrow, R infers ncol
m1 <- matrix(1:12, nrow = 3)
cat('nrow=3 only, inferred ncol =', ncol(m1), '
')
print(m1)
# Only specify ncol, R infers nrow
m2 <- matrix(1:12, ncol = 4)
cat('ncol=4 only, inferred nrow =', nrow(m2), '
')مصفوفة من المحارف
لا تقتصر المصفوفات على الأعداد، إذ يمكنكم إنشاء مصفوفات محرفية للبيانات الفئوية أو ألواح الألعاب أو شبكات البحث. ومع ذلك، يجب أن تظل جميع العناصر من النوع نفسه.
# Tic-tac-toe board
board <- matrix(c('X', 'O', 'X',
'O', 'X', 'O',
'O', 'X', 'O'),
nrow = 3, ncol = 3, byrow = TRUE)
cat('Tic-Tac-Toe board:
')
print(board)
cat('Type:', class(board), '
')إنشاء المصفوفات: ملخص
إليكم ملخصًا لطرق إنشاء المصفوفات في R:
matrix(data, nrow, ncol)— الإنشاء الأساسي (الملء حسب الأعمدة افتراضيًا)matrix(data, nrow, ncol, byrow=TRUE)— الملء صفًا تلو الآخرmatrix(0, n, m)— مصفوفة صفريةdiag(n)— مصفوفة الوحدةdim(m)وnrow(m)وncol(m)— فحص الأبعادis.matrix(m)— التحقق من النوع
# Quick creation reference
cat('3x2 column-fill:
'); print(matrix(1:6, 3, 2))
cat('3x2 row-fill:
'); print(matrix(1:6, 3, 2, byrow=TRUE))
cat('2x2 zeros:
'); print(matrix(0, 2, 2))
cat('3x3 identity:
'); print(diag(3))تحقق سريع
افتراضيًا (من دون byrow = TRUE)، بأي ترتيب تملأ matrix() العناصر؟
مراجعة: إنشاء المصفوفات
ممتاز! فيما يلي أهم ما تعلمتموه في هذا الدرس:
- تنشئ
matrix(data, nrow, ncol)مصفوفة — وتُملأ البيانات عمودًا تلو الآخر افتراضيًا - استخدموا
byrow = TRUEلملء المصفوفة صفًا تلو الآخر - يكفي تحديد
nrowأوncolفقط — إذ تستنتج R القيمة الأخرى - تعيد
dim(m)القيمةc(rows, cols)؛ بينما تعطيnrow()وncol()العددين كلٌّ على حدة - تتحقق
is.matrix()مما إذا كان الكائن مصفوفة - تنشئ
matrix(0, n, n)مصفوفة أصفار، بينما تنشئdiag(n)مصفوفة الوحدة
# Full workflow: create, inspect, verify
m <- matrix(seq(2, 24, by = 2), nrow = 4, ncol = 3, byrow = TRUE)
cat('Even numbers matrix:
')
print(m)
cat('Rows:', nrow(m), '| Cols:', ncol(m), '| Elements:', length(m), '
')الأسئلة الشائعة
هل درس «إنشاء المصفوفات باستخدام matrix()» مجاني؟
نعم — نص درس «إنشاء المصفوفات باستخدام matrix()» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة R Academy، انتقل إلى CoddyKit PRO. تتضمن دورة R Academy 4 دروس في المجموع.
ماذا ستتعلم في «إنشاء المصفوفات باستخدام matrix()»؟
أنشئ المصفوفات بتحديد data وnrow وncol وbyrow. تتمرن على R Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ R Academy؟
لا تُشترط خبرة سابقة. R Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «إنشاء المصفوفات باستخدام matrix()»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس R Academy هذا؟
نعم. كل درس في R Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء المصفوفات باستخدام matrix()
- فهرسة المصفوفات واختيار أجزائها
- حسابات المصفوفات وعملياتها
- تبديل المصفوفات وإعادة تشكيلها