Menu
CoddyTech

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] 9

sapply() 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 4

Untuk 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 6

Fungsi-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 3
challenge icon

Tantangan

Mudah

Lengkapi 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")
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler R online