ج: كيفية استخدام الدالة application() على أعمدة محددة
غالبًا قد ترغب في استخدام الدالة application() لتطبيق دالة على أعمدة محددة في إطار بيانات في R.
ومع ذلك، فإن الدالة application() تجبر أولاً جميع الأعمدة في إطار البيانات على أن يكون لها نفس نوع الكائن قبل تطبيق الدالة، الأمر الذي قد يكون له في بعض الأحيان عواقب غير مقصودة.
الخيار الأفضل هو الدالة lapply() ، والتي تستخدم الصيغة الأساسية التالية:
df[c(' col1 ', ' col2 ')] <- lapply(df[c(' col1 ', ' col2 ')], my_function)
يطبق هذا المثال تحديدًا الدالة my_function فقط على col1 و col2 في إطار البيانات.
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: تطبيق دالة على أعمدة محددة في إطار البيانات
لنفترض أن لدينا إطار البيانات التالي في R:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), points=c(19, 22, 15, NA, 14, 25, 25, 25), rebounds=c(10, 6, 3, 7, 11, 13, 9, 12), assists=c(4, 4, 3, 6, 7, 5, 10, 8)) #view data frame df team points rebound assists 1 A 19 10 4 2 A 22 6 4 3 to 15 3 3 4 A NA 7 6 5 B 14 11 7 6 B 25 13 5 7 B 25 9 10 8 B 25 12 8
لنفترض الآن أننا قمنا بتعريف الدالة التالية التي تقوم بضرب القيم في 2 ثم تضيف 1:
#define function
my_function <- function (x) x*2 + 1
يمكننا استخدام الدالة lapply() التالية لتطبيق هذه الدالة فقط على أعمدة النقاط والارتدادات في إطار البيانات:
#apply function to specific columns
df[c(' points ', ' rebounds ')] <- lapply(df[c(' points ', ' rebounds ')], my_function)
#view updated data frame
df
team points rebound assists
1 A 39 21 4
2 A 45 13 4
3 A 31 7 3
4 A NA 15 6
5 B 29 23 7
6 B 51 27 5
7 B 51 19 10
8 B 51 25 8
من النتيجة، يمكننا أن نرى أننا نضرب كل قيمة في أعمدة النقاط والمرتدات في 2 ثم نضيف 1.
لاحظ أيضًا أن أعمدة الفرق والتمريرات الحاسمة ظلت دون تغيير.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:
دليل لتطبيق () وlapply () وsapply () وtapply () في R
كيفية استخدام وظيفة التحويل في R