Aritmetika Matriks
Termasuk bagian Logika dan Alur dalam perjalanan R di Coddy. Pelajaran 20 dari 64.
Operasi aritmetika antara matriks dan angka, atau antara dua matriks berukuran sama, dilakukan pada setiap sel:
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)Output:
[,1] [,2]
[1,] 2 4
[2,] 6 8
[,1] [,2]
[1,] 11 22
[2,] 33 44Perbandingan juga bekerja pada setiap sel dan menghasilkan matriks logis. Gunakan untuk menghitung sel, atau sebagai indeks untuk mengubah hanya sel yang cocok:
m <- matrix(c(4, 12, 7, 15), nrow = 2, byrow = TRUE)
print(sum(m > 10))
m[m > 10] <- 10
print(m)Output:
[1] 2
[,1] [,2]
[1,] 4 10
[2,] 7 10t(m) menukar baris dan kolom. %*% adalah hasil kali matriks, yang menggabungkan satu baris dari matriks pertama dengan satu kolom dari matriks kedua untuk menghasilkan setiap sel, sehingga ncol(a) harus sama dengan nrow(b):
a <- matrix(1:4, nrow = 2, byrow = TRUE)
print(t(a))
print(a %*% a)Output:
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 7 10
[2,] 15 22Aritmetika sel demi sel antara matriks dengan ukuran berbeda akan berhenti dengan error non-conformable arrays, jadi bandingkan dim() terlebih dahulu. Hasil kali matriks memiliki aturan ukurannya sendiri:
a <- matrix(1:4, nrow = 2)
b <- matrix(1:6, nrow = 2)
print(identical(dim(a), dim(b)))
print(dim(a %*% b))Output:
[1] FALSE
[1] 2 3Tantangan
MudahLengkapi cap_values(m, limit). Kembalikan dua baris: Over: dengan jumlah sel yang nilainya lebih besar dari limit, lalu Total: dengan jumlah seluruh nilai dalam matriks setelah setiap nilai yang lebih besar dari limit diganti dengan limit.
Kode yang disediakan membaca matriks dari satu baris: 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. Baris berikutnya berisi limit. Kode mencetak setiap baris yang dikembalikan.
Coba sendiri
cap_values <- function(m, limit) {
# Tulis kodemu di sini
c("Over: 0", "Total: 0")
}
# 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(cap_values(parse_matrix(input[1]), as.numeric(input[2])), 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