Menu
Coddy logo textTech

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   44

Bir 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   10

t(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   22

Farklı 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 3
challenge icon

Görev

Kolay

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