كيفية استخدام do.call في r (3 أمثلة)
يمكنك استخدام do.call() في R لتطبيق دالة معينة على القائمة ككل.
تستخدم هذه الوظيفة بناء الجملة الأساسي التالي:
do. call (function, list)
توضح الأمثلة التالية كيفية استخدام do.call() عمليًا.
مثال 1: استخدم do.call() مع sum
يوضح التعليمة البرمجية التالية كيفية استخدام do.call() لحساب مجموع القيم في القائمة:
#create list values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2)) #calculate sum of values in list do. call (sum, values_list) [1] 48
مجموع القيم في القائمة هو 48 .
لاحظ أننا سنتلقى خطأً إذا حاولنا ببساطة استخدام sum() مباشرةً مع القائمة:
#create list values_list <- list(A=c(1, 2, 3), B=c(7, 5, 10), C=c(9, 9, 2)) #attempt to sum values in list sum(values_list) Error in sum(values_list): invalid 'type' (list) of argument
مثال 2: استخدم do.call() مع المتوسط
يوضح التعليمة البرمجية التالية كيفية استخدام do.call() لحساب متوسط القيم في القائمة:
#define argument to use in do.call args <- list(1:20, na. rm = TRUE ) #calculate mean of values in list do. call (mean, args) [1] 10.5
متوسط القيم في القائمة هو 10.5 .
لاحظ أننا سنتلقى خطأً إذا حاولنا ببساطة استخدام Mean() مباشرةً مع القائمة:
#attempt to calculate mean of values in list mean(list(1:20), na. rm = TRUE ) [1] NA Warning message: In mean.default(list(1:20), na.rm = TRUE): argument is not numeric or logical: returning NA
مثال 3: استخدم do.call() مع rbind
يوضح التعليمة البرمجية التالية كيفية استخدام do.call() لتوصيل إطارات بيانات متعددة في R:
#create three data frames df1 <- data. frame (team=c('A', 'B', 'C'), dots=c(22, 27, 38)) df2 <- data. frame (team=c('D', 'E', 'F'), dots=c(22, 14, 20)) df3 <- data. frame (team=c('G', 'H', 'I'), dots=c(11, 15, 18)) #place three data frames into list df_list <- list(df1, df2, df3) #row bind together all three data frames do. call (rbind, df_list) team points 1 to 22 2 B 27 3 C 38 4 D 22 5 E 14 6 F 20 7 G 11 8:15 a.m. 9 I 18
والنتيجة هي إطار بيانات يحتوي على الصفوف من كل إطار من إطارات البيانات الثلاثة.
لاحظ أننا لن نحصل على إطار البيانات المطلوب إذا حاولنا استخدام rbind() مباشرة مع القائمة:
#create three data frames df1 <- data. frame (team=c('A', 'B', 'C'), dots=c(22, 27, 38)) df2 <- data. frame (team=c('D', 'E', 'F'), dots=c(22, 14, 20)) df3 <- data. frame (team=c('G', 'H', 'I'), dots=c(11, 15, 18)) #place three data frames into list df_list <- list(df1, df2, df3) #attmempt to row bind together all three data frames rbind(df_list) [,1] [,2] [,3] df_list List,2 List,2 List,2
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية استخدام الوظائف الشائعة الأخرى في R:
كيفية استخدام وظائف اللصق واللصق 0 في R
كيفية استخدام وظيفة الاستبدال () في R
كيفية استخدام الدالة View() في R
كيفية استخدام وظيفة مندوب () في R