Tutorial ini bertujuan memperkenalkan koleksi fungsi apply (). Fungsi menerapkan () adalah yang paling asas dari semua koleksi. Kami juga akan belajar secara sapply (), lapply () dan tapply (). Koleksi aplikasinya dapat dilihat sebagai pengganti gelung.
Koleksi apply () digabungkan dengan paket penting r jika anda memasang R dengan Anaconda. Fungsi menerapkan () dapat diberi makan dengan banyak fungsi untuk melakukan aplikasi berlebihan pada koleksi objek (bingkai data, daftar, vektor, dll.). Tujuan menerapkan () adalah terutamanya untuk mengelakkan penggunaan konstruk gelung secara eksplisit. Mereka dapat digunakan untuk daftar input, matriks atau array dan menerapkan fungsi. Fungsi apa pun boleh diterapkan ke dalam (
Dalam tutorial ini, anda akan belajar
- menggunakan fungsi ()
- fungsi lapply ()
- fungsi sapply ()
- Vektor kepingan
- fungsi tapply ()
menggunakan fungsi ()
menerapkan () mengambil bingkai data atau matriks sebagai input dan memberikan output dalam vektor, senarai atau array. menerapkan () Fungsi terutama digunakan untuk mengelakkan penggunaan konstruk gelung secara eksplisit. Ini adalah yang paling asas dari semua koleksi yang boleh digunakan di atas matriks.
Fungsi ini mengambil 3 argumen:
apply(X, MARGIN, FUN)Here:-x: an array or matrix-MARGIN: take a value or range between 1 and 2 to define where to apply the function:-MARGIN=1`: the manipulation is performed on rows-MARGIN=2`: the manipulation is performed on columns-MARGIN=c(1,2)` the manipulation is performed on rows and columns-FUN: tells which function to apply. Built functions like mean, median, sum, min, max and even user-defined functions can be applied>
Contoh paling mudah ialah menjumlahkan matriks di semua lajur. Kod yang berlaku (m1, 2, jumlah) akan menerapkan fungsi jumlah ke matriks 5x6 dan mengembalikan jumlah setiap lajur yang dapat diakses dalam set data.
m1 <- matrix(C<-(1:10),nrow=5, ncol=6)m1a_m1 <- apply(m1, 2, sum)a_m1
Pengeluaran:
Amalan terbaik: Simpan nilai sebelum mencetaknya ke konsol.
fungsi lapply ()
Fungsi lapply () berguna untuk melakukan operasi pada objek senarai dan mengembalikan objek senarai dengan set asal yang sama panjang. lappy () mengembalikan senarai yang panjangnya sama dengan objek senarai input, masing-masing elemen adalah hasil penerapan FUN pada elemen senarai yang sesuai. lapply () mengambil senarai, vektor atau bingkai data sebagai input dan memberikan output dalam senarai.
lapply(X, FUN)Arguments:-X: A vector or an object-FUN: Function applied to each element of x
l in lapply () bermaksud senarai. Perbezaan antara lapply () dan berlaku () terletak di antara pengembalian output. Keluaran lapply () adalah senarai. lapply () dapat digunakan untuk objek lain seperti bingkai data dan senarai.
fungsi lapply () tidak memerlukan MARGIN.
Contoh yang sangat mudah ialah menukar nilai rentetan matriks menjadi huruf kecil dengan fungsi tolower. Kami membina matriks dengan nama filem terkenal. Nama itu dalam format huruf besar.
movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN")movies_lower <-lapply(movies, tolower)str(movies_lower)
Pengeluaran:
## List of 4## $:chr"spyderman"## $:chr"batman"## $:chr"vertigo"## $:chr"chinatown"
Kita boleh menggunakan unlist () untuk menukar senarai menjadi vektor.
movies_lower <-unlist(lapply(movies,tolower))str(movies_lower)
Pengeluaran:
## chr [1:4] "spyderman" "batman" "vertigo" "chinatown"
fungsi sapply ()
fungsi sapply () mengambil senarai, vektor atau bingkai data sebagai input dan memberikan output dalam vektor atau matriks. Ia berguna untuk operasi pada objek senarai dan mengembalikan objek senarai dengan panjang set asal yang sama. fungsi sapply () melakukan pekerjaan yang sama dengan fungsi lapply () tetapi mengembalikan vektor.
sapply(X, FUN)Arguments:-X: A vector or an object-FUN: Function applied to each element of x
Kami dapat mengukur jarak minimum dan jarak berhenti kereta dari set data kereta.
dt <- carslmn_cars <- lapply(dt, min)smn_cars <- sapply(dt, min)lmn_cars
Pengeluaran:
## $speed## [1] 4## $dist## [1] 2
smn_cars
Pengeluaran:
## speed dist## 4 2
lmxcars <- lapply(dt, max)smxcars <- sapply(dt, max)lmxcars
Pengeluaran:
## $speed## [1] 25## $dist## [1] 120
smxcars
Pengeluaran:
## speed dist## 25 120
Kita dapat menggunakan fungsi bawaan pengguna menjadi lapply () atau sapply (). Kami membuat fungsi bernama avg untuk menghitung rata-rata minimum dan maksimum vektor.
avg <- function(x) {( min(x) + max(x) ) / 2}fcars <- sapply(dt, avg)fcars
Pengeluaran
## speed dist## 14.5 61.0
Fungsi sapply () lebih cekap daripada lapply () dalam output yang dikembalikan kerana nilai sapply () menyimpan arah ke vektor. Dalam contoh seterusnya, kita akan melihat perkara ini tidak selalu berlaku.
Kita dapat merumuskan perbezaan antara berlaku (), sapply () dan `lapply () dalam jadual berikut:
Fungsi |
Hujah |
Objektif |
Masukan |
Pengeluaran |
---|---|---|---|---|
berlaku |
terpakai (x, MARGIN, FUN) |
Terapkan fungsi pada baris atau lajur atau kedua-duanya |
Rangka data atau matriks |
vektor, senarai, tatasusunan |
lalai |
lapply (X, MENYENANGKAN) |
Terapkan fungsi pada semua elemen input |
Senarai, vektor atau bingkai data |
senarai |
dengan lembut |
sedih (X MENYENANGKAN) |
Terapkan fungsi pada semua elemen input |
Senarai, vektor atau bingkai data |
vektor atau matriks |
Vektor kepingan
Kita dapat menggunakan lapply () atau sapply () yang dapat ditukar untuk memotong bingkai data. Kami membuat fungsi, di bawah rata-rata (), yang mengambil vektor nilai berangka dan mengembalikan vektor yang hanya mengandungi nilai yang benar-benar melebihi rata-rata. Kami membandingkan kedua-dua hasil dengan fungsi yang sama ().
below_ave <- function(x) {ave <- mean(x)return(x[x > ave])}dt_s<- sapply(dt, below_ave)dt_l<- lapply(dt, below_ave)identical(dt_s, dt_l)
Pengeluaran:
## [1] TRUE
fungsi tapply ()
tapply () menghitung ukuran (min, median, min, max, dll ...) atau fungsi untuk setiap pemboleh ubah faktor dalam vektor. Ini adalah fungsi yang sangat berguna yang membolehkan anda membuat subset vektor dan kemudian menerapkan beberapa fungsi pada setiap subset.
tapply(X, INDEX, FUN = NULL)Arguments:-X: An object, usually a vector-INDEX: A list containing factor-FUN: Function applied to each element of x
Sebahagian daripada tugas saintis data atau penyelidik adalah untuk mengira ringkasan pemboleh ubah. Sebagai contoh, ukur data purata atau kumpulan berdasarkan ciri. Sebilangan besar data dikumpulkan mengikut ID, bandar, negara dan sebagainya. Meringkaskan kumpulan menunjukkan corak yang lebih menarik.
Untuk memahami bagaimana ia berfungsi, mari gunakan set data iris. Set data ini sangat terkenal dalam dunia pembelajaran mesin. Tujuan kumpulan data ini adalah untuk meramalkan kelas setiap tiga spesies bunga: Sepal, Versicolor, Virginica. Set data mengumpulkan maklumat untuk setiap spesies mengenai panjang dan lebarnya.
Sebagai karya sebelumnya, kita dapat menghitung jangka panjang bagi setiap spesies. tapply () adalah cara cepat untuk melakukan pengiraan ini.
data(iris)tapply(iris$Sepal.Width, iris$Species, median)
Pengeluaran:
## setosa versicolor virginica## 3.4 2.8 3.0