موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

عائلة الدالة apply في لغة البرمجة آر R

14/01/2019 | لغة البرمجة آر R | تعليق واحد

عائلة الدالة apply في برنامج آر R هي بديل فعال للحلقات التكرارية (Loops) وتتعامل مع هياكل مختلفة من البيانات، وهي تشمل الدوال التالية:

  1. apply: وهي دالة تتعامل مع المصوفات حيث يمكن من خلالها إجراء العمليات على الصفوف او الأعمده بكل مرونه وهذه الدالة تأخد الشكل التالي:

apply(X, MARGIN, FUN)

حيث أن:

X مصفوفة
MARGIN جزء من مصفوفة حيث 1 يشير للصفوف و 2 يشير للأعمدة
FUN الدالة المطلوب تطبيقها

نفرض أن لدينا المصفوفة التالية:

In:
X=array((1:9),c(3,3))
X
Out:
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

بالتالي الأمر apply يستخدم لتطبيق دالة على أعمدة او صفوف المصفوفة، فمثلاً يمكن حساب المتوسط (mean) للأعمدة كما يلي:

In:
apply(X,2,mean)
Out:
[1] 2 5 8

او للصفوف كما يلي:

In:
apply(X,1,mean)
Out:
[1] 4 5 6

كما يمكن استخدام apply مع اي دالة خاصة، فمثلاً لحساب مجموع عناصر كل عامود مضروب في 10 نستخدم:

In:
apply(X,2,function(X)sum(X)*10)
Out:
[1]  60 150 240

2. lapply: وهي تتعامل مع قوائم البيانات (list) وتأخذ الشكل:

lapply(X, FUN, ...)

حيث أن:

X قائمة (list)
FUN الدالة المطلوب تطبيقها

ويمكن إستخدامها كما يلي:

In:
X <- list(a = 1:10, b = rnorm(10)) 
lapply(X, mean)
Out:
$a
[1] 5.5

$b
[1] 0.4354553

حيث يمكن إستبدال الدالة mean بأي دالة مبنية في آر R او معرفة بواسطة المستخدم.

3. supply: وهي تقوم بنفس عمل الدالة lapply ولكن الإختلاف في المخرجات ولها الشكل:

sapply(X, FUN, ..., simplify, USE.NAME)

حيث أن:

X قائمة (list)
FUN الدالة المطلوب تطبيقها
simplify تبسيط النتيجة الى متجه او مصفوفة
USE.NAME استخدام X اذا كانت نصية كأسماء للنتيجة إذا لم يكن لها أسماء

ويمكن إستخدامها كما الكود التالي:

In:
X = list(a = 1:10, b = rnorm(10))
sapply(X,mean)
Out:
        a         b 
5.5000000 0.3474299

4. vapply: وهي تشبه الدالة sapply ولكن تتطلب تحديد نوع المخرجات المرغوبة من الدالة وتأخذ الشكل:

vapply(X, FUN, FUN.VALUE, , ..., USE.NAME)

حيث أن:

X قائمة (list)
FUN الدالة المطلوب تطبيقها
FUN.VALUE متجه (قالب للنتيجة من FUN)
USE.NAME استخدام X اذا كانت نصية كأسماء للنتيجة إذا لم يكن لها أسماء

وتستخدم كما في الكود التالي:

In:
X = list(a = 1:10, b = rnorm(10)) 
vapply(X, mean,numeric(1))
Out:
         a          b 
 5.5000000 -0.1269196

كذلك يمكن إستخدامها كما يلي:

In:
vapply(X, fivenum,c(Min. = 0, "1st Qu." = 0, Median = 0, "3rd Qu." = 0, Max. = 0))
Out:
           a          b
Min.     1.0 -1.3522746
1st Qu.  3.0 -0.4292616
Median   5.5 -0.1326287
3rd Qu.  8.0  0.5984162
Max.    10.0  1.0095862

5. replicate: وهي تقوم بتكرار عملية معينة عدد من المرات، حيث تأخذ الشكل التالي:

replicate(n, expr, simplify)

حيث أن:

n عدد مرات التكرار
expr العبارة الحسابية المطلوب تكرارها
simplify تبسيط النتيجة الى متجه او مصفوفة

فمثلاً، لحساب المتوسط لعينة عشوائية من التوزيع الطبيعي وتكرار ذلك 20 مره يمكن إستخدام الكود:

In:
replicate(20, mean(rnorm(10000)), simplify = TRUE)
Out:
[1] -0.011153404 -0.001782791 -0.000470738 0.003906841 0.011111986 
[6] -0.002796648 0.007120001 0.003120159 0.007987970 0.020770251 
[11] 0.019081680 0.006376755 -0.003385706 -0.004729454 0.006226663 
[16] -0.013943534 -0.004263212 -0.001227075 0.006997650 0.013958527

6. mapply: هو نسخة متعددة المتغيرات من الدالة sapply وهي تأخد الشكل:

mapply(FUN, ..., MoreArgs, simplify, USE.NAME)

حيث أن:

FUN الدالة المطلوب تطبيقها
MoreArgs المدخلات الأخرى للدالة FUN
simplify تبسيط النتيجة الى متجه او مصفوفة
USE.NAME استخدام أسماء المدخل الأول إذا كان له أسماء أو إذا كان متجه نصي فيستخدم كأسماء

ويمكن إستخدامها كما في الكود التالي:

In:
mapply(rep, times = 1:3, x = letters[1:3])
Out:
[[1]]
[1] "a"

[[2]]
[1] "b" "b"

[[3]]
[1] "c" "c" "c"

7. tapply: في بعض الأحيان نحتاج الى تطبيق دالة على بعض البيانات وفقاً لعامل (factor) معين فيمكن أستخدام tapply والتي تأخذ الشكل:

tapply(X, INDEX, FUN, ..., default simplify)

حيث أن:

X متجه
INDEX المدخلات الأخرى للدالة FUN
FUN الدالة المطلوب تطبيقها
default فقط في حالة التبسيط الى مصفوفة، القيم الأولية الإفتراضية
simplify تبسيط النتيجة الى متجه او مصفوفة

ويمكن إستخدامها كما يلي:

In:
X=rnorm(10)
Group=rbinom(10,1,0.4)
Data = data.frame(X,Group) 
tapply(X, Group, mean)
Out:
         0          1 
 0.3576166 -0.0807149
جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • برنامج آر R

    البرنامج الإحصائي آر R هو واحد من أشهر البرامج الإحصائية. هذا البرنامج يعتمد على لغة البرمجة R والتي قام بتطويرها كلاً... برنامج آر R
    اقرأ المزيد
  • آر استوديو (RStudio)

    آر استوديو هو بيئة تشغيل للبرنامج الإحصائي آر R يحوي مجموعة من النوافد والأدوات المصممة بشكل رائع والتي تساعد على... آر استوديو (RStudio)
    اقرأ المزيد
  • مقدمة في لغة البرمجة آر R

    هذا الموضوع سوف نوضح بالتفصيل بعض الأساسيات في لغة البرمجة آر R والتي تمثل الخطوه الأولى في فهم هذه اللغة الهامة ويمكن... مقدمة في لغة البرمجة آر R
    اقرأ المزيد

التعليقات 1

  1. محمد بتاريخ مارس 25, 2020 - 12:26 م

    لو سمحت اي شيء متعلق بالبرامج علي اللغة R

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

د. عزيز عوض الله الجعيد
دكتوراه في الإحصاء، عالم بيانات، مبرمج، مهتم في التحليل المتقدم، والبيانات الضخمة والذكاء الاصطناعي، لمزيد من المعلومات أضغط هنا

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز