R'de application(), lapply(), sapply() ve tapply() için bir kılavuz
Bu eğitimde yerleşik R işlevleri application() , sapply() , lapply() ve tapply() arasındaki farklar ve her işlevin ne zaman ve nasıl kullanılacağına ilişkin örnekler açıklanmaktadır.
uygula()
Bir matrisin veya veri çerçevesinin satırlarına veya sütunlarına bir işlev uygulamak istediğinizde Apply() işlevini kullanın.
Apply() fonksiyonunun temel sözdizimi şöyledir:
uygula (X, KENAR, EĞLENCE)
- X dizinin veya veri bloğunun adıdır
- MARGIN hangi boyutta işlem yapılacağını belirtir (1 = satır, 2 = sütun)
- EĞLENCE, gerçekleştirmek istediğiniz spesifik işlemdir (örn. minimum, maksimum, toplam, ortalama vb.)
Aşağıdaki kod, application() işlevinin birkaç örneğini uygulama halinde göstermektedir.
#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
uygula()
Bir listenin, vektörün veya veri çerçevesinin her bir öğesine bir işlev uygulamak ve sonuç olarak bir liste elde etmek istediğinizde lapply() işlevini kullanın.
lapply() fonksiyonunun temel sözdizimi şöyledir:
lapply(X, EĞLENCE)
- X listenin, vektörün veya veri çerçevesinin adıdır
- EĞLENCE, gerçekleştirmek istediğiniz özel işlemdir
Aşağıdaki kod, bir veri çerçevesindeki sütunlarda lapply() işlevinin kullanımına ilişkin çeşitli örnekleri gösterir.
#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
Listelerde işlem yapmak için lapply() işlevini de kullanabiliriz. Aşağıdaki örnekler bunun nasıl yapılacağını göstermektedir.
#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
uygula()
Bir listenin, vektörün veya veri çerçevesinin her bir öğesine bir işlev uygulamak ve böylece liste yerine bir vektör elde etmek istediğinizde sapply() işlevini kullanın.
sapply() fonksiyonunun temel sözdizimi şöyledir:
uygula (X, EĞLENCE)
- X listenin, vektörün veya veri çerçevesinin adıdır
- EĞLENCE, gerçekleştirmek istediğiniz özel işlemdir
Aşağıdaki kod, bir veri çerçevesindeki sütunlarda sapply() işlevinin kullanımına ilişkin çeşitli örnekleri gösterir.
#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
Listeler üzerinde işlemler gerçekleştirmek için sapply() işlevini de kullanabiliriz. Aşağıdaki örnekler bunun nasıl yapılacağını göstermektedir.
#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
musluk()
Bir vektörün alt kümelerine bir fonksiyon uygulamak istediğinizde ve alt kümeler genellikle bir faktör olan başka bir vektör tarafından tanımlandığında tapply() işlevini kullanın.
tapply() fonksiyonunun temel sözdizimi şöyledir:
(X, INDEX, EĞLENCE) öğesine dokunun
- X nesnenin adıdır, genellikle bir vektördür
- INDEX bir veya daha fazla faktörün listesidir
- EĞLENCE, gerçekleştirmek istediğiniz özel işlemdir
Aşağıdaki kod, iris gömülü R veri kümesinde tapply() kullanımının bir örneğini gösterir .
#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