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 

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir