Matris Aritmetiği
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 20 / 64.
Bir matris ile bir sayı arasındaki veya aynı boyuttaki iki matris arasındaki aritmetik işlemler hücre hücre gerçekleşir:
a <- matrix(1:4, nrow = 2, byrow = TRUE)
b <- matrix(c(10, 20, 30, 40), nrow = 2, byrow = TRUE)
print(a * 2)
print(a + b)Çıktı:
[,1] [,2]
[1,] 2 4
[2,] 6 8
[,1] [,2]
[1,] 11 22
[2,] 33 44Bir karşılaştırma hücre hücre de çalışır ve mantıksal bir matris döndürür. Hücreleri saymak veya yalnızca eşleşen hücreleri değiştirmek için bunu bir dizin olarak kullanın:
m <- matrix(c(4, 12, 7, 15), nrow = 2, byrow = TRUE)
print(sum(m > 10))
m[m > 10] <- 10
print(m)Çıktı:
[1] 2
[,1] [,2]
[1,] 4 10
[2,] 7 10t(m) satırları ve sütunları yer değiştirir. %*% matris çarpımıdır; burada her sonuç hücresi, ilk matrisin bir satırı ile ikinci matrisin bir sütununu birleştirir. Bu nedenle ncol(a), nrow(b) değerine eşit olmalıdır:
a <- matrix(1:4, nrow = 2, byrow = TRUE)
print(t(a))
print(a %*% a)Çıktı:
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 7 10
[2,] 15 22Farklı boyutlardaki matrisler arasında hücre hücre aritmetik, non-conformable arrays hatasıyla durur; bu nedenle önce dim() değerlerini karşılaştırın. Matris çarpımının kendine özgü bir boyut kuralı vardır:
a <- matrix(1:4, nrow = 2)
b <- matrix(1:6, nrow = 2)
print(identical(dim(a), dim(b)))
print(dim(a %*% b))Çıktı:
[1] FALSE
[1] 2 3Görev
Kolaycap_values(m, limit) işlevini tamamlayın. İki satır döndürün: Over: ile limit değerinin üzerindeki hücrelerin sayısını, ardından her limit değerinin üzerindeki değer limit ile değiştirildikten sonra matrisin toplamını içeren Total: satırını döndürün.
Sağlanan kod bir satırdan matris okur: satırlar ; ile, bir satırdaki değerler ise , ile ayrılır; bu nedenle 1,2;3,4, satırları 1 2 ve 3 4 olan bir matristir. Sonraki satırda limit bulunur. Kod, döndürülen her satırı yazdırır.
Kendin dene
cap_values <- function(m, limit) {
# Kodunuzu buraya yazın
c("Over: 0", "Total: 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(cap_values(parse_matrix(input[1]), as.numeric(input[2])), 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