دليل لتطبيق () وlapply () وsapply () وtapply () في r
يشرح هذا البرنامج التعليمي الاختلافات بين وظائف R المضمنة application() و sapply() و lapply() و Tapply() بالإضافة إلى أمثلة عن متى وكيف يتم استخدام كل وظيفة.
يتقدم()
استخدم الدالة Apply() عندما تريد تطبيق دالة على صفوف أو أعمدة المصفوفة أو إطار البيانات.
بناء الجملة الأساسي للوظيفة application() هو:
تطبيق (X، الهامش، المرح)
- X هو اسم المصفوفة أو كتلة البيانات
- يشير الهامش إلى البعد المطلوب تنفيذ العملية (1 = الصف، 2 = العمود)
- FUN هي العملية المحددة التي تريد تنفيذها (على سبيل المثال الحد الأدنى والحد الأقصى والمجموع والمتوسط وما إلى ذلك)
يوضح التعليمة البرمجية التالية عدة أمثلة لتطبيق() في العمل.
#create a data frame with three columns and five rows data <- data.frame(a = c(1, 3, 7, 12, 9), b = c(4, 4, 6, 7, 8), c = c(14, 15, 11, 10, 6)) data #abc #1 1 4 14 #2 3 4 15 #3 7 6 11 #4 12 7 10 #5 9 8 6 #find the sum of each row apply(data, 1, sum) #[1] 19 22 24 29 23 #find the sum of each column apply(data, 2, sum) #abc #32 29 56 #find the mean of each row apply(data, 1, mean) #[1] 6.333333 7.333333 8.000000 9.666667 7.666667 #find the mean of each column, rounded to one decimal place round(apply(data, 2, mean), 1) #abc #6.4 5.8 11.2 #find the standard deviation of each row apply(data, 1, sd) #[1] 6.806859 6.658328 2.645751 2.516611 1.527525 #find the standard deviation of each column apply(data, 2, sd) #abc #4.449719 1.788854 3.563706
يتقدم()
استخدم الدالة lapply() عندما تريد تطبيق دالة على كل عنصر في القائمة أو المتجه أو إطار البيانات والحصول على قائمة نتيجة لذلك.
بناء الجملة الأساسي للدالة lapply() هو:
لابلي (X، FUN)
- X هو اسم القائمة أو المتجه أو إطار البيانات
- FUN هي العملية المحددة التي تريد تنفيذها
يوضح التعليمة البرمجية التالية عدة أمثلة لاستخدام lapply() على الأعمدة في إطار البيانات.
#create a data frame with three columns and five rows data <- data.frame(a = c(1, 3, 7, 12, 9), b = c(4, 4, 6, 7, 8), c = c(14, 15, 11, 10, 6)) data #abc #1 1 4 14 #2 3 4 15 #3 7 6 11 #4 12 7 10 #5 9 8 6 #find mean of each column and return results as a list apply(data, mean) #$a # [1] 6.4 # # $b # [1] 5.8 # # $c # [1] 11.2 #multiply values in each column by 2 and return results as a list lapply(data, function(data) data*2) #$a # [1] 2 6 14 24 18 # # $b # [1] 8 8 12 14 16 # # $c # [1] 28 30 22 20 12
يمكننا أيضًا استخدام الدالة lapply() لإجراء العمليات على القوائم. توضح الأمثلة التالية كيفية القيام بذلك.
#create a list x <- list(a=1, b=1:5, c=1:10) x #$a # [1] 1 # # $b # [1] 1 2 3 4 5 # # $c # [1] 1 2 3 4 5 6 7 8 9 10 #find the sum of each element in the list lapply(x, sum) #$a # [1] 1 # # $b # [1] 15 # # $c #[1]55 #find the mean of each element in the list lapply(x, mean) #$a # [1] 1 # # $b # [1] 3 # # $c # [1] 5.5 #multiply values of each element by 5 and return results as a list lapply(x, function(x) x*5) #$a # [1] 5 # # $b # [1] 5 10 15 20 25 # # $c # [1] 5 10 15 20 25 30 35 40 45 50
يتقدم()
استخدم الدالة sapply() عندما تريد تطبيق دالة على كل عنصر في قائمة أو متجه أو إطار بيانات وبالتالي الحصول على متجه بدلاً من القائمة.
بناء الجملة الأساسي للدالة sapply() هو:
تطبيق (X، متعة)
- X هو اسم القائمة أو المتجه أو إطار البيانات
- FUN هي العملية المحددة التي تريد تنفيذها
يوضح التعليمة البرمجية التالية عدة أمثلة لاستخدام sapply() على الأعمدة في إطار البيانات.
#create a data frame with three columns and five rows data <- data.frame(a = c(1, 3, 7, 12, 9), b = c(4, 4, 6, 7, 8), c = c(14, 15, 11, 10, 6)) data #abc #1 1 4 14 #2 3 4 15 #3 7 6 11 #4 12 7 10 #5 9 8 6 #find mean of each column and return results as a vector sapply(data, mean) #abc #6.4 5.8 11.2 #multiply values in each column by 2 and return results as a matrix sapply(data, function(data) data*2) #abc #[1,] 2 8 28 #[2,] 6 8 30 #[3,] 14 12 22 #[4,] 24 14 20 #[5,] 18 16 12
يمكننا أيضًا استخدام sapply() لإجراء العمليات على القوائم. توضح الأمثلة التالية كيفية القيام بذلك.
#create a list x <- list(a=1, b=1:5, c=1:10) x #$a # [1] 1 # # $b # [1] 1 2 3 4 5 # # $c # [1] 1 2 3 4 5 6 7 8 9 10 #find the sum of each element in the list sapply(x, sum) #abc #1 15 55 #find the mean of each element in the list sapply(x, mean) #abc #1.0 3.0 5.5
مقبض()
استخدم الدالة Tapply() عندما تريد تطبيق دالة على مجموعات فرعية من متجه ويتم تعريف المجموعات الفرعية بواسطة متجه آخر، عادةً ما يكون عاملاً.
بناء الجملة الأساسي للدالة Tapply() هو:
اضغط على (X، INDEX، FUN)
- X هو اسم الكائن، وعادةً ما يكون متجهًا
- إندكس هي قائمة من عامل واحد أو أكثر
- FUN هي العملية المحددة التي تريد تنفيذها
يعرض التعليمة البرمجية التالية مثالاً لاستخدام Tapply() على مجموعة بيانات R المضمنة للقزحية .
#view first six lines of iris dataset head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species #1 5.1 3.5 1.4 0.2 setosa #2 4.9 3.0 1.4 0.2 setosa #3 4.7 3.2 1.3 0.2 setosa #4 4.6 3.1 1.5 0.2 setosa #5 5.0 3.6 1.4 0.2 setosa #6 5.4 3.9 1.7 0.4 setosa #find the max Sepal.Length of each of the three Species tapply(iris$Sepal.Length, iris$Species, max) #setosa versicolor virginica #5.8 7.0 7.9 #find the mean Sepal.Width of each of the three Species tapply(iris$Sepal.Width, iris$Species, mean) # setosa versicolor virginica # 3,428 2,770 2,974 #find the minimum Petal.Width of each of the three Species tapply(iris$Petal.Width, iris$Species, min) # setosa versicolor virginica #0.1 1.0 1.4