lapply dan sapply
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 32 dari 64.
lapply(x, f) memanggil f pada setiap elemen x dan mengembalikan hasilnya dalam sebuah list, satu elemen untuk setiap input:
squares <- lapply(1:3, function(i) i^2)
print(length(squares))
print(squares[[3]])Output:
[1] 3
[1] 9sapply() melakukan hal yang sama dan menyederhanakan hasilnya: saat setiap pemanggilan menghasilkan satu nilai, kamu mendapatkan vector biasa, bukan list:
print(sapply(1:3, function(i) i^2))
print(sapply(c(4, 9, 16), sqrt))Output:
[1] 1 4 9
[1] 2 3 4Untuk vector karakter, sapply() memberi nama pada hasil berdasarkan input. Tambahkan USE.NAMES = FALSE untuk mendapatkan vector biasa:
words <- c("tea", "coffee")
print(sapply(words, nchar))
print(sapply(words, nchar, USE.NAMES = FALSE))Output:
tea coffee
3 6
[1] 3 6Fungsi-fungsi ini menggantikan perulangan yang membangun hasil satu elemen demi satu elemen. Kedua versi di bawah menghitung jumlah vokal dalam setiap kata:
words <- c("banana", "sky", "idea")
vowels <- function(w) sum(strsplit(w, "")[[1]] %in% c("a", "e", "i", "o", "u"))
counts <- c()
for (w in words) counts <- c(counts, vowels(w))
print(counts)
print(sapply(words, vowels, USE.NAMES = FALSE))Output:
[1] 3 0 3
[1] 3 0 3Tantangan
MudahLengkapi vowel_counts(words). Kembalikan satu baris untuk setiap kata, banana: 3, yang berisi jumlah huruf vokal (a, e, i, o, u) dalam kata tersebut. Gunakan sapply() untuk menghitung huruf vokal dalam semua kata.
Code yang disediakan membaca kata-kata sebagai satu baris yang dipisahkan koma, berisi kata-kata dengan huruf kecil, lalu mencetak setiap baris yang dikembalikan.
Coba sendiri
vowel_counts <- function(words) {
# Tulis kodemu di sini
character(0)
}
# Kode input/output yang disediakan: biarkan apa adanya
input <- suppressWarnings(readLines(file("stdin")))
cat(vowel_counts(strsplit(input[1], ",")[[1]]), sep = "\n")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online