Satır ve Sütun Özetleri
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 19 / 64.
rowSums() ve rowMeans() satır başına bir sonuç döndürür; colSums() ve colMeans() ise sütun başına bir sonuç döndürür. Burada her satır bir öğrenciyi, her sütun ise bir testi temsil eder:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(rowMeans(scores))
print(colSums(scores))Çıktı:
[1] 80.00000 73.33333
[1] 140 165 155Diğer herhangi bir özet için apply(m, 1, f) her satırda f işlevini, apply(m, 2, f) ise her sütunda çağırır:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
print(apply(scores, 1, max))
print(apply(scores, 2, min))Çıktı:
[1] 90 85
[1] 60 75 70Hangi satırın veya sütunun kazandığını bulmak için bir özeti which.max() ile birleştirin:
scores <- matrix(c(80, 90, 70, 60, 75, 85), nrow = 2, byrow = TRUE)
best_test <- which.max(colMeans(scores))
print(best_test)
print(round(rowMeans(scores), 1))Çıktı:
[1] 2
[1] 80.0 73.3apply(), function(r) ile anında yazdığınız bir işlevi de kabul eder. Burada her satırdaki 5’ten büyük değerleri sayar:
m <- matrix(c(3, 8, 1, 9, 2, 7), nrow = 2, byrow = TRUE)
print(apply(m, 1, function(r) sum(r > 5)))Çıktı:
[1] 1 2Görev
Kolayclass_report(scores) işlevini tamamla. scores içindeki her satır bir öğrenciyi, her sütun bir testi temsil eder. Öğrenci başına bir satır olacak şekilde, öğrencinin ortalaması bir ondalık basamağa yuvarlanmış olarak Student 1: 81.7 biçiminde sonuç döndür. Son satıra, ardından ortalaması en yüksek olan sütunun numarası gelecek şekilde Best test: ekle.
Sağlanan kod, tek bir satırdan bir matris okur: satırlar ; ile, bir satırdaki değerler ise , ile ayrılır; dolayısıyla 1,2;3,4, satırları 1 2 ve 3 4 olan bir matristir. Kod, döndürülen her satırı yazdırır.
Kendin dene
class_report <- function(scores) {
# Kodunuzu buraya yazın
character(0)
}
# Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
parse_matrix <- function(line) {
rows <- strsplit(line, ";")[[1]]
matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
}
cat(class_report(parse_matrix(input[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