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 5Aynı 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 9Satı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 7Görev
Kolaycell_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")
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