كيفية إنشاء حلقة for متداخلة في r (بما في ذلك الأمثلة)
تسمح لك حلقة for المتداخلة بالتكرار على العناصر في متجهات متعددة (أو أبعاد متعددة للمصفوفة) وتنفيذ عمليات معينة.
الهيكل الأساسي للحلقة في R هو:
for (i in 1:4) { print (i) } [1] 1 [1] 2 [1] 3 [1] 4
والبنية الأساسية لحلقة for المتداخلة هي:
for (i in 1:4) { for (j in 1:2) { print (i*j) } } [1] 1 [1] 2 [1] 2 [1] 4 [1] 3 [1] 6 [1] 4 [1] 8
يوضح هذا البرنامج التعليمي بعض الأمثلة لإنشاء حلقات for متداخلة في R.
مثال 1: حلقة For متداخلة في R
يوضح الكود التالي كيفية استخدام حلقة for المتداخلة لملء قيم مصفوفة 4×4:
#create matrix
empty_mat <- matrix(nrow= 4 , ncol= 4 )
#view empty matrix
empty_mat
[,1] [,2] [,3] [,4]
[1,] NA NA NA NA
[2,] NA NA NA NA
[3,] NA NA NA NA
[4,] NA NA NA NA
#use nested for loop to fill in values of matrix
for (i in 1:4) {
for (j in 1:4) {
empty_mat[i, j] = (i*j)
}
}
#view matrix
empty_mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 4 6 8
[3,] 3 6 9 12
[4,] 4 8 12 16
مثال 2: حلقة For متداخلة في R
يوضح التعليمة البرمجية التالية كيفية استخدام حلقة for المتداخلة لتربيع كل قيمة في إطار البيانات:
#create empty data frame
df <- data.frame(var1=c(1, 7, 4),
var2=c(9, 13, 15))
#view empty data frame
df
var1 var2
1 1 9
2 7 13
3 4 15
#use nested for loop to square each value in the data frame
for (i in 1:nrow(df)) {
for (j in 1:ncol(df)) {
df[i, j] = df[i, j]^2
}
}
#view new data frame
df
var1 var2
1 1 81
2 49 169
3 16 225
ملاحظة حول التكرار
بشكل عام، تعمل حلقات for المتداخلة بشكل جيد مع مجموعات البيانات أو المصفوفات الصغيرة، ولكنها تميل إلى أن تكون بطيئة جدًا مع البيانات الأكبر حجمًا.
بالنسبة للبيانات الضخمة، تميل مجموعة وظائف التطبيق إلى أن تكون أسرع بكثير، وتحتوي حزمة data.table على العديد من الوظائف المضمنة التي تعمل بكفاءة على مجموعات بيانات أكبر.
مصادر إضافية
كيفية التكرار على أسماء الأعمدة في R
كيفية إضافة صفوف إلى إطار البيانات في R