Küme İşlemleri
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 13 / 64.
Üç işlev, iki vektörü kümeler olarak birleştirir. Her biri tekrar içermeyen değerler döndürür:
union(a, b) vektörlerden herhangi birinde bulunan değerleri, intersect(a, b) her ikisinde de bulunan değerleri, setdiff(a, b) ise a içinde olup b içinde bulunmayan değerleri içerir.
mon <- c("ana", "ben", "cy")
tue <- c("ben", "dee", "cy", "ben")
print(union(mon, tue))
print(intersect(mon, tue))
print(setdiff(mon, tue))Çıktı:
[1] "ana" "ben" "cy" "dee"
[1] "ben" "cy"
[1] "ana"setdiff(), bağımsız değişkenlerinin sırasına bağlıdır. Yalnızca ikinci vektörde bulunan değerleri elde etmek için sıralarını değiştirin:
mon <- c("ana", "ben", "cy")
tue <- c("ben", "dee", "cy")
print(setdiff(tue, mon))Çıktı:
[1] "dee"Hiçbir şey kalmadığında, sonuç metin için boş bir vektör olan character(0) olur:
print(intersect(c("a", "b"), c("x", "y")))Çıktı:
character(0)Sonuçlar, ilk vektörün sırasını korur. Çıktının öngörülebilir bir sıraya sahip olması gerektiğinde bunları sıralayın ve birleştirmeden önce sonucun boş olup olmadığını kontrol edin:
a <- c("pear", "fig", "kiwi")
b <- c("kiwi", "pear")
both <- sort(intersect(a, b))
print(paste(both, collapse = ", "))
print(length(setdiff(b, a)) == 0)Çıktı:
[1] "kiwi, pear"
[1] TRUEGörev
Kolaycompare_courses(a, b) işlevini tamamla. a ve b, iki dersin öğrencileridir. Üç satır döndür:
Both:ve ardından her iki derste bulunan öğrencilerOnly first:ve ardından yalnızcaaiçinde bulunan öğrencilerTotal:ve ardından her iki dersteki farklı öğrenci sayısı
Her listedeki adları sırala ve , ile birleştir. Boş bir liste none olarak yazılır.
Sağlanan kod, iki dersi virgülle ayrılmış satırlar olarak okur ve döndürülen her satırı yazdırır.
Kendin dene
compare_courses <- function(a, b) {
# Kodunuzu buraya yazın
c("Both: ", "Only first: ", "Total: 0")
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(compare_courses(strsplit(input[1], ",")[[1]], strsplit(input[2], ",")[[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