Menu
Coddy logo textTech

lapply ve sapply

Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 32 / 64.

lapply(x, f), x'in her öğesi üzerinde f'yi çağırır ve sonuçları, her girdi için bir öğe olacak şekilde bir listede döndürür:

squares <- lapply(1:3, function(i) i^2)
print(length(squares))
print(squares[[3]])

Çıktı:

[1] 3
[1] 9

sapply() aynı işlemi yapar ve sonucu sadeleştirir: her çağrı tek bir değer döndürdüğünde, liste yerine düz bir vektör elde edersiniz:

print(sapply(1:3, function(i) i^2))
print(sapply(c(4, 9, 16), sqrt))

Çıktı:

[1] 1 4 9
[1] 2 3 4

Bir karakter vektörü üzerinde sapply(), sonuçları girdilerin adlarıyla adlandırır. Düz bir vektör için USE.NAMES = FALSE ekleyin:

words <- c("tea", "coffee")
print(sapply(words, nchar))
print(sapply(words, nchar, USE.NAMES = FALSE))

Çıktı:

   tea coffee 
     3      6 
[1] 3 6

Bu işlevler, sonucu her seferinde bir öğe oluşturacak şekilde oluşturan döngünün yerini alır. Aşağıdaki her iki sürüm de her kelimede kaç sesli harf bulunduğunu hesaplar:

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))

Çıktı:

[1] 3 0 3
[1] 3 0 3
challenge icon

Görev

Kolay

vowel_counts(words) işlevini tamamla. Her sözcük için, sözcükteki ünlülerin (a, e, i, o, u) sayısını içeren banana: 3 biçiminde bir satır döndür. Tüm sözcüklerdeki ünlüleri saymak için sapply() kullan.

Sağlanan kod, sözcükleri virgülle ayrılmış küçük harfli sözcüklerden oluşan tek bir satır olarak okur ve döndürülen her satırı yazdırır.

Kendin dene

vowel_counts <- function(words) {
  # Kodunuzu buraya yazın
  character(0)
}

# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(vowel_counts(strsplit(input[1], ",")[[1]]), sep = "\n")
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online R derleyicisi