Menu
Coddy logo textTech

Matrisleri İndeksleme

Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 18 / 64.

m[i, j], i satırındaki ve j sütunundaki değerdir. Bir satırın veya sütunun tamamını almak için bir tarafı boş bırakın: m[i, ], i satırıdır ve m[, j], j sütunudur.

m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m[2, 3])
print(m[1, ])
print(m[, 2])

Çıktı:

[1] 6
[1] 1 2 3
[1] 2 5

Aynı indeksler <- işaretinin sol tarafında da çalışır; böylece bir hücre, satır veya sütun değiştirilebilir:

m <- matrix(0, nrow = 2, ncol = 3)
m[1, 2] <- 5
m[2, ] <- c(7, 8, 9)
print(m)

Çıktı:

     [,1] [,2] [,3]
[1,]    0    5    0
[2,]    7    8    9

Satırların ve sütunların adları olabilir; bu adlar rownames() ve colnames() ile ayarlanır. Daha sonra bir ad, dizin olarak çalışır:

sales <- matrix(c(3, 5, 2, 8), nrow = 2, byrow = TRUE)
rownames(sales) <- c("north", "south")
colnames(sales) <- c("jan", "feb")
print(sales["south", "feb"])
print(sales[, "jan"])

Çıktı:

[1] 8
north south 
    3     2 

İndeks vektörleri, bir kerede satır ve sütunlardan oluşan bir bloğu seçer:

m <- matrix(1:9, nrow = 3, byrow = TRUE)
print(m[1:2, 2:3])
print(m[c(1, 3), 1])

Çıktı:

     [,1] [,2]
[1,]    2    3
[2,]    5    6
[1] 1 7
challenge icon

Görev

Kolay

cell_report(m, r, c) işlevini tamamlayın. Üç satır döndürün: Cell: ile r satırındaki ve c sütunundaki değer, Row: ile r satırının değerleri ve Column: ile c sütununun değerleri. Değerleri tek boşluklarla ayı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, 1 2 ve 3 4 satırlarına sahip bir matristir. Sonraki iki satır r ve c değerlerini içerir. Kod, döndürülen her satırı yazdırır.

Kendin dene

cell_report <- function(m, r, c) {
  # Kodunuzu buraya yazın
  c("Cell: ", "Row: ", "Column: ")
}

# 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(cell_report(parse_matrix(input[1]), as.numeric(input[2]), as.numeric(input[3])), 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