Pengindeksan dan Subset Matriks
Akses baris, kolom, dan elemen menggunakan notasi [row, col].
Pengindeksan dan Subset Matriks adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Dasar Indeks Matrix
Untuk mengakses elemen dalam matrix, gunakan notasi m[row, col]. Indeks baris dan kolom dimulai dari 1 di R. Koma wajib dicantumkan — jika dihilangkan, matrix diperlakukan sebagai vector datar.
m <- matrix(1:12, nrow = 3, ncol = 4)
cat('Full matrix:
')
print(m)
# Element at row 2, column 3
cat('m[2, 3] =', m[2, 3], '
')
# Element at row 1, column 4
cat('m[1, 4] =', m[1, 4], '
')Mengekstrak Baris Lengkap
Kosongkan indeks kolom untuk mengekstrak seluruh baris. Hasilnya adalah sebuah vector (dimensi matrix dihapus). Koma tetap harus dicantumkan.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
print(scores)
# Extract Alice's row
alice_scores <- scores[1, ]
cat('Alice:', alice_scores, '
')
cat('Alice mean:', mean(alice_scores), '
')Mengekstrak Kolom Lengkap
Kosongkan indeks baris untuk mengekstrak seluruh kolom. Seperti pada ekstraksi baris, hasilnya adalah sebuah vector. Koma yang memisahkan posisi baris dan kolom tetap harus dicantumkan.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
# Extract the Math column
math_scores <- scores[, 1]
cat('Math scores:', math_scores, '
')
cat('Math mean: ', mean(math_scores), '
')
cat('Math max: ', max(math_scores), '
')Membuat Subset Beberapa Baris dan Kolom
Gunakan vector indeks untuk mengekstrak beberapa baris atau kolom sekaligus. Hasilnya adalah sebuah submatrix (tetap berupa matrix, bukan vector), sehingga struktur dua dimensinya dipertahankan.
m <- matrix(1:16, nrow = 4, ncol = 4)
cat('Original 4x4:
')
print(m)
# Extract rows 1,3 and columns 2,4
sub_m <- m[c(1, 3), c(2, 4)]
cat('Submatrix rows 1,3 cols 2,4:
')
print(sub_m)
cat('Class:', class(sub_m), '
')Mengakses Berdasarkan Nama Baris/Kolom
Jika sebuah matrix memiliki nama baris dan kolom, Anda dapat mengindeksnya berdasarkan nama, bukan posisi. Cara ini lebih mudah dibaca dan tetap andal saat baris atau kolom diurutkan ulang.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE,
dimnames = list(
c('Alice', 'Bob', 'Carol'),
c('Math', 'Sci', 'Eng', 'Hist')
))
# Access by name
cat('Bob Science:', scores['Bob', 'Sci'], '
')
cat('Carol row:
')
print(scores['Carol', ])
cat('English column:
')
print(scores[, 'Eng'])Pengindeksan Logis pada Matrix
Anda dapat menggunakan vector logis (atau matrix logis) untuk memilih elemen. Jika vector logis digunakan pada satu dimensi, vector tersebut memilih baris/kolom yang nilainya TRUE.
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
# Select students with mean score >= 85
row_means <- rowMeans(scores)
high_achievers <- scores[row_means >= 85, ]
cat('High achievers (mean >= 85):
')
print(high_achievers)Pengindeksan Negatif — Mengecualikan Baris/Kolom
Tambahkan awalan - pada indeks untuk mengecualikan baris atau kolom tersebut. Ini adalah cara yang praktis untuk menghapus baris atau kolom tertentu tanpa mencantumkan semua baris atau kolom lain yang ingin dipertahankan.
m <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Original:
')
print(m)
# Drop row 2
cat('Without row 2:
')
print(m[-2, ])
# Drop columns 1 and 3
cat('Without cols 1 and 3:
')
print(m[, c(-1, -3)])Satu Elemen dengan drop = FALSE
Secara default, mengekstrak satu baris atau kolom akan menghapus dimensinya (mengembalikan vector). Gunakan drop = FALSE untuk mempertahankan hasil sebagai matrix (dengan struktur baris/kolom tetap dipertahankan).
m <- matrix(1:9, nrow = 3, ncol = 3)
# Default: drops to vector
row1_vector <- m[1, ]
cat('m[1,] class:', class(row1_vector), '
') # numeric (vector)
# drop = FALSE: keeps as 1-row matrix
row1_matrix <- m[1, , drop = FALSE]
cat('m[1,,drop=FALSE] class:', class(row1_matrix), '
')
cat('Dimensions:', dim(row1_matrix), '
')Mengganti Nilai Berdasarkan Indeks
Anda dapat mengubah elemen tertentu dengan menggabungkan pengindeksan dan penetapan nilai. Cara ini berlaku untuk satu elemen, seluruh baris, seluruh kolom, maupun submatrix.
m <- matrix(0, nrow = 4, ncol = 4)
cat('Zero matrix:
')
print(m)
# Set diagonal to 5
for (i in 1:4) m[i, i] <- 5
cat('After setting diagonal:
')
print(m)
# Replace entire row 2
m[2, ] <- c(1, 2, 3, 4)
cat('After replacing row 2:
')
print(m)Pengindeksan Linear (Datar)
Secara internal, sebuah matrix disimpan sebagai vector datar (kolom demi kolom). Anda dapat mengakses elemen menggunakan satu indeks bilangan bulat dalam urutan datar ini. Cara ini terkadang berguna untuk operasi massal.
m <- matrix(c(10,20,30,40,50,60), nrow = 2, ncol = 3)
cat('Matrix:
')
print(m)
# Flat indices: column by column
cat('m[1] =', m[1], '(row 1, col 1)
')
cat('m[3] =', m[3], '(row 1, col 2)
')
cat('m[5] =', m[5], '(row 1, col 3)
')
# Replace flat index 4
m[4] <- 99
print(m)Ringkasan Pengindeksan
Referensi singkat untuk pengindeksan matrix di R:
m[r, c]— satu elemen pada baris r, kolom cm[r, ]— seluruh baris rm[, c]— seluruh kolom cm[c(r1,r2), c(c1,c2)]— submatrixm['name', 'name']— akses berdasarkan dimnamem[-r, ]— mengecualikan baris rm[logical_vec, ]— pemilihan baris secara logism[r, , drop=FALSE]— mempertahankan hasil sebagai matrix
m <- matrix(c(5,10,15,20,25,30), nrow = 2, ncol = 3)
cat('m[1,2] =', m[1,2], '
')
cat('m[2,] =', m[2,], '
')
cat('m[,3] =', m[,3], '
')
cat('m[-1,] :
'); print(m[-1, ])Pemeriksaan Singkat
Apa yang dikembalikan oleh m[-2, ] untuk matrix m dengan 3 baris?
Ringkasan: Pengindeksan Matrix
Kerja bagus! Hal-hal penting dari pelajaran ini:
m[r, c]menggunakan baris lalu kolom — kedua posisi dipisahkan dengan koma- Kosongkan salah satu sisi (
m[r, ]ataum[, c]) untuk mengekstrak seluruh baris/kolom - Indeks negatif mengecualikan baris atau kolom
- Vector logis dapat menyaring baris atau kolom
- Dimensi bernama memungkinkan pengindeksan berdasarkan nama agar lebih mudah dibaca
drop = FALSEmencegah hilangnya dimensi saat mengekstrak satu baris/kolom
# Practical: find best student per subject
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
for (subj in colnames(scores)) {
best <- rownames(scores)[which.max(scores[, subj])]
cat('Best in', subj, ':', best, '
')
}Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengindeksan dan Subset Matriks” gratis?
Ya — teks lengkap “Pengindeksan dan Subset Matriks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengindeksan dan Subset Matriks”?
Akses baris, kolom, dan elemen menggunakan notasi [row, col]. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Pengindeksan dan Subset Matriks” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Membuat Matriks dengan matrix()
- Pengindeksan dan Subset Matriks
- Aritmetika dan Operasi Matriks
- Mentransposisi dan Mengubah Bentuk Matriks