Lapply vs sapply di r: apa bedanya?


Fungsi lapply() di R dapat digunakan untuk menerapkan fungsi ke setiap elemen daftar, vektor, atau bingkai data dan mendapatkan daftar yang sesuai.

Fungsi sapply() juga dapat digunakan untuk menerapkan fungsi ke setiap elemen daftar, vektor, atau bingkai data, namun sebagai hasilnya ia mengembalikan vektor .

Contoh berikut menunjukkan cara menggunakan masing-masing fungsi ini di R.

Contoh: Cara menggunakan apply() di R

Kode berikut menunjukkan cara menggunakan fungsi lapply() untuk mengalikan setiap nilai di setiap kolom bingkai data dengan 2:

 #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

Perhatikan bahwa hasilnya adalah sebuah daftar.

Contoh: Cara menggunakan sapply() di R

Kode berikut menunjukkan cara menggunakan fungsi sapply() untuk mengalikan setiap nilai di setiap kolom bingkai data dengan 2:

 #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

Perhatikan bahwa hasilnya adalah matriks vektor.

Perhatikan bahwa Anda dapat menggunakan as.data.frame() untuk mengembalikan bingkai data, bukan matriks:

 #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

Kapan menggunakan lapply() atau sapply()

Dalam 99% kasus, Anda akan menggunakan sapply() karena lebih masuk akal jika mengembalikan vektor atau matriks.

Namun, dalam keadaan yang jarang terjadi, Anda mungkin perlu menggunakan lapply() jika Anda ingin hasilnya berupa daftar.

Perhatikan bahwa sapply() dan lappy() melakukan operasi yang sama pada vektor, matriks, atau bingkai data. Perbedaannya hanya pada kelas objek yang dikembalikan.

Sumber daya tambahan

Cara menerapkan fungsi ke setiap baris bingkai data di R
Cara menggunakan fungsi colSums() di R
Cara menggunakan fungsi rowSums() di R

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *