Mengakses Elemen Matriks
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 18 dari 64.
m[i, j] adalah nilai pada baris i dan kolom j. Kosongkan salah satu sisi untuk mengambil seluruh baris atau kolom: m[i, ] adalah baris i dan m[, j] adalah kolom j.
m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m[2, 3])
print(m[1, ])
print(m[, 2])Output:
[1] 6
[1] 1 2 3
[1] 2 5Indeks yang sama juga berlaku di sebelah kiri <-, sehingga sebuah sel, baris, atau kolom dapat diganti:
m <- matrix(0, nrow = 2, ncol = 3)
m[1, 2] <- 5
m[2, ] <- c(7, 8, 9)
print(m)Output:
[,1] [,2] [,3]
[1,] 0 5 0
[2,] 7 8 9Baris dan kolom dapat memiliki nama yang ditetapkan dengan rownames() dan colnames(). Lalu, nama dapat digunakan sebagai indeks:
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"])Output:
[1] 8
north south
3 2 Vektor indeks memilih blok baris dan kolom sekaligus:
m <- matrix(1:9, nrow = 3, byrow = TRUE)
print(m[1:2, 2:3])
print(m[c(1, 3), 1])Output:
[,1] [,2]
[1,] 2 3
[2,] 5 6
[1] 1 7Tantangan
MudahLengkapi cell_report(m, r, c). Kembalikan tiga baris: Cell: dengan nilai pada baris r dan kolom c, Row: dengan nilai pada baris r, dan Column: dengan nilai pada kolom c. Pisahkan nilai dengan satu spasi.
Kode yang disediakan membaca matriks dari satu baris: baris dipisahkan dengan ; dan nilai dalam satu baris dipisahkan dengan ,, jadi 1,2;3,4 adalah matriks dengan baris 1 2 dan 3 4. Dua baris berikutnya berisi r dan c. Kode mencetak setiap baris yang dikembalikan.
Coba sendiri
cell_report <- function(m, r, c) {
# Tulis kodemu di sini
c("Cell: ", "Row: ", "Column: ")
}
# Kode input/output yang disediakan: biarkan apa adanya
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")
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Substring dengan substr()Memformat dengan sprintf()Memisahkan dan MenggabungkanMencari stringMengganti TeksRangkuman: Pembuat Nama Pengguna4Matriks
Membuat MatriksMengakses Elemen MatriksRingkasan Baris dan KolomAritmetika MatriksRangkuman: Denah Tempat Duduk2Pencarian Nilai-Kunci
Pencarian pada Vector BernamaMemeriksa KunciMenambahkan dan Menghapus KunciMenelusuri NamaUlasan: Meja Saham5Proyek, Buku Nilai
Menambahkan SiswaMencatat Nilai3Set dan Penghitungan
Nilai UnikOperasi setPengujian KeanggotaanMenghitung dengan table()Ulasan: Tamu Acara6Fungsi sebagai Nilai
Fungsi AnonimMengirim FungsiMengembalikan FungsiClosure dengan StateRangkuman: Aturan Diskon9Data Frame
Membuat Data FrameKolom dan BarisMemfilter BarisMenambahkan dan MengurutkanRangkuman: Laporan Penjualan12Proyek: Pelacak Pengeluaran
Mencatat PengeluaranTotal PengeluaranLatihan sendiri: Compiler R online