R'de lapply vs sapply: fark nedir?


R’deki lapply() işlevi, bir listenin, vektörün veya veri çerçevesinin her bir öğesine bir işlev uygulamak ve buna göre bir liste elde etmek için kullanılabilir.

sapply() işlevi ayrıca bir listenin, vektörün veya veri çerçevesinin her bir öğesine bir işlev uygulamak için de kullanılabilir, ancak sonuç olarak bir vektör döndürür.

Aşağıdaki örnekler bu işlevlerin her birinin R’de nasıl kullanılacağını gösterir.

Örnek: R’de application() nasıl kullanılır?

Aşağıdaki kod, bir veri çerçevesinin her sütunundaki her değeri 2 ile çarpmak için lapply() işlevinin nasıl kullanılacağını gösterir:

 #create data frame
df <- data. frame (x=c(1, 2, 2, 3, 5),
                 y=c(4, 4, 6, 7, 8),
                 z=c(7, 7, 9, 9, 9))

#view data frame
df

  X Y Z
1 1 4 7
2 2 4 7
3 2 6 9
4 3 7 9
5 5 8 9

#multiply each value in each column by 2
lapply(df, function (df) df*2)

$x
[1] 2 4 4 6 10

$y
[1] 8 8 12 14 16

$z
[1] 14 14 18 18 18

Sonucun bir liste olduğunu unutmayın.

Örnek: R’de sapply() nasıl kullanılır?

Aşağıdaki kod, bir veri çerçevesinin her sütunundaki her değeri 2 ile çarpmak için sapply() işlevinin nasıl kullanılacağını gösterir:

 #create data frame
df <- data. frame (x=c(1, 2, 2, 3, 5),
                 y=c(4, 4, 6, 7, 8),
                 z=c(7, 7, 9, 9, 9))

#view data frame
df

  X Y Z
1 1 4 7
2 2 4 7
3 2 6 9
4 3 7 9
5 5 8 9

#multiply each value in each column by 2
sapply(df, function (df) df*2)

      X Y Z
[1,] 2 8 14
[2,] 4 8 14
[3,] 4 12 18
[4,] 6 14 18
[5,] 10 16 18

Sonucun bir vektör matrisi olduğuna dikkat edin.

Matris yerine veri çerçevesi döndürmek için as.data.frame() işlevini kullanabileceğinizi unutmayın:

 #multiply each value in each column by 2 and return a data frame
as. data . frame (sapply(df, function (df) df*2))

   X Y Z
1 2 8 14
2 4 8 14
3 4 12 18
4 6 14 18
5 10 16 18

lapply() veya sapply() ne zaman kullanılır?

Vakaların %99’unda sapply() işlevini kullanacaksınız çünkü bir vektör veya matris döndürmek daha mantıklıdır.

Ancak nadir durumlarda, sonucun bir liste olmasını istiyorsanız bunun yerine lapply() işlevini kullanmanız gerekebilir.

sapply() ve lappy() işlevlerinin bir vektör, matris veya veri çerçevesinde aynı işlemleri gerçekleştirdiğini unutmayın. Tek fark, döndürülen nesnenin sınıfındadır.

Ek kaynaklar

R’deki her veri çerçevesi satırına bir işlev nasıl uygulanır?
R’de colSums() işlevi nasıl kullanılır?
R’de rowSums() işlevi nasıl kullanılır?

Yorum ekle

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