Lapply vs sapply في r: ما الفرق؟


يمكن استخدام الدالة lapply() ‎ في لغة R لتطبيق دالة على كل عنصر في القائمة أو المتجه أو إطار البيانات والحصول على القائمة وفقًا لذلك.

يمكن أيضًا استخدام الدالة sapply() لتطبيق دالة على كل عنصر في قائمة أو متجه أو إطار بيانات، ولكنها تُرجع متجهًا نتيجة لذلك.

توضح الأمثلة التالية كيفية استخدام كل من هذه الوظائف في R.

مثال: كيفية استخدام application() في R

يوضح التعليمة البرمجية التالية كيفية استخدام الدالة lapply() لضرب كل قيمة في كل عمود من إطار البيانات بمقدار 2:

 #create data frame
df <- data. frame (x=c(1, 2, 2, 3, 5),
                 y=c(4, 4, 6, 7, 8),
                 z=c(7, 7, 9, 9, 9))

#view data frame
df

  X Y Z
1 1 4 7
2 2 4 7
3 2 6 9
4 3 7 9
5 5 8 9

#multiply each value in each column by 2
lapply(df, function (df) df*2)

$x
[1] 2 4 4 6 10

$y
[1] 8 8 12 14 16

$z
[1] 14 14 18 18 18

لاحظ أن النتيجة هي قائمة.

مثال: كيفية استخدام sapply() في R

يوضح التعليمة البرمجية التالية كيفية استخدام الدالة sapply() لضرب كل قيمة في كل عمود من إطار البيانات بمقدار 2:

 #create data frame
df <- data. frame (x=c(1, 2, 2, 3, 5),
                 y=c(4, 4, 6, 7, 8),
                 z=c(7, 7, 9, 9, 9))

#view data frame
df

  X Y Z
1 1 4 7
2 2 4 7
3 2 6 9
4 3 7 9
5 5 8 9

#multiply each value in each column by 2
sapply(df, function (df) df*2)

      X Y Z
[1,] 2 8 14
[2,] 4 8 14
[3,] 4 12 18
[4,] 6 14 18
[5,] 10 16 18

لاحظ أن النتيجة هي مصفوفة متجهة.

لاحظ أنه يمكنك استخدام as.data.frame() لإرجاع إطار بيانات بدلاً من المصفوفة:

 #multiply each value in each column by 2 and return a data frame
as. data . frame (sapply(df, function (df) df*2))

   X Y Z
1 2 8 14
2 4 8 14
3 4 12 18
4 6 14 18
5 10 16 18

متى تستخدم lapply() أو sapply()

في 99% من الحالات سوف تستخدم sapply() لأنه من المنطقي إرجاع متجه أو مصفوفة.

ومع ذلك، في حالات نادرة قد تحتاج إلى استخدام lapply() بدلاً من ذلك إذا كنت تريد أن تكون النتيجة قائمة.

لاحظ أن sapply() و lappy() يقومان بنفس العمليات على ناقل أو مصفوفة أو إطار بيانات. والفرق الوحيد هو في فئة الكائن الذي تم إرجاعه.

مصادر إضافية

كيفية تطبيق دالة على كل صف إطار بيانات في R
كيفية استخدام الدالة colSums() في R
كيفية استخدام الدالةrowSums() في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *