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] 9sapply() 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 4Bir 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 6Bu 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 3Görev
Kolayvowel_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")
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
1Dizeleri Derinlemesine
substr() ile Alt Dizelersprintf() ile BiçimlendirmeBölme ve BirleştirmeDizelerde AramaMetin DeğiştirmeTekrar - Kullanıcı Adı Oluşturucu4Matrisler
Matris OluşturmaMatrisleri İndekslemeSatır ve Sütun ÖzetleriMatris AritmetiğiTekrar - Oturma Planı2Anahtar-Değer Aramaları
Adlandırılmış Vektör AramalarıAnahtarları DenetlemeAnahtar Ekleme ve KaldırmaAdlar Üzerinde DöngüTekrar - Hisse Senedi Masası5Proje - Not Defteri
Öğrenci EklemeNotları Kaydetme3Kümeler ve Sayma
Benzersiz DeğerlerKüme İşlemleriÜyelik Testleritable() ile SaymaTekrar - Etkinlik Konukları6Değer Olarak Fonksiyonlar
Anonim FonksiyonlarFonksiyonları GeçirmeFonksiyon DöndürmeDurum Bilgili Closure'larTekrar - İndirim Kuralları9Veri Çerçeveleri
Veri Çerçeveleri OluşturmaSütunlar ve SatırlarSatırları FiltrelemeEkleme ve SıralamaTekrar - Satış Raporu12Proje - Harcama Takipçisi
Harcamaları KaydetmeToplam HarcamaKendi başına pratik yap: Online R derleyicisi