Pengantar Pemrograman R

Matriks

Di dalam subbab ini, Anda akan bekerja dengan matriks-matriks di R. Secara spesifik, Anda akan belajar bagaimana membuat matriks dan melakukan perhitungan-perhitungan sederhana terhadap matriks tersebut. Untuk melakukannya, Anda akan menganalisis pendapatan dari pemutaran sekuel film The Matrix!

Selayang Pandang Tentang Matriks

Di R, matriks adalah kumpulan elemen-elemen yang memiliki jenis data sama (numerik, karakter, atau logika) dan disusun ke dalam baris dan kolom. Karena matriks hanya memiliki baris dan kolom, matriks berdimensi dua.

Kita dapat membuat matriks di R dengan fungsi matrix(). Contoh penggunaannya adalah seperti berikut.

matrix(1:12, nrow = 4, byrow = TRUE)

Baris kode tersebut menghasilkan luaran seperti ini.

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12

Luaran tersebut menunjukkan apa makna argumen-argumen yang kita tuliskan di dalam fungsi matrix().

  • Argumen pertamanya merupakan data yang, oleh R, akan disusun menjadi baris-baris dan kolom-kolom sebuah matriks. Di sini, kita menggunakan data 1:12 yang merupakan bentuk singkat dari c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).
  • Argumen nrow menginformasikan R berapa baris yang seharusnya dibuat. Di contoh ini, nrow = 4 mengindikasikan bahwa matriks yang dibuat memiliki empat baris.
  • Argumen ketiga, yaitu byrow, mengindikasikan bahwa pengisian matriksnya dilakukan menurut baris-barisnya. Elemen-elemen data kita tersebut secara terurut diisikan ke baris pertama, kedua, dan demikian seterusnya. Jika kita ingin pengisiannya menurut kolom, kita dapat menggantinya menjadi byrow = FALSE.

Sekarang, silakan kerjakan Latihan 1.21 berikut untuk berlatih membuat sebuah matriks.

Latihan 1.21

Buatlah sebuah matriks yang memiliki tiga baris dan memuat bilangan bulat mulai dari 1 sampai 9, serta pengisiannya menurut baris.

# no pec # Buat sebuah matriks 3 baris dan berisi bilangan 1 sampai 9 # Buat sebuah matriks 3 baris dan berisi bilangan 1 sampai 9 matrix(1:9, nrow = 3, byrow = TRUE) ex() %>% check_function("matrix") %>% { check_arg(., 'data') %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriksnya dengan benar? Cermati kembali perintah soalnya!") check_arg(., 'byrow') %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriksnya dengan benar? Cermati kembali perintah soalnya!") check_arg(., 'nrow') %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriksnya dengan benar? Cermati kembali perintah soalnya!") } ex() %>% check_output_expr("matrix(1:9, nrow=3, byrow=TRUE)",missing_msg = "Sepertinya ada masalah dengan pendefinisian matriksnya. Silakan periksa kembali perintah soalnya!") success_msg("Awal yang hebat! Ayo semangat lanjut ke pembahasan berikutnya.")
Fungsi yang digunakan untuk membuat sebuah matriks adalah matrix(). Argumen-argumen yang perlu diisi adalah data, nrow, dan byrow.

Menganalisis Matriks

Sekarang saatnya Anda bekerja dengan data nyata! Di bagian ini, Anda akan diajak untuk menganalisis pendapatan sekuel film The Matrix dengan menggunakan matriks.

Pada editor dalam Latihan 1.22, Anda diberikan dua vektor. Masing-masing merepresentasikan pendapatan dua film pertama dari sekuel The Matrix (yaitu The Matrix dan The Matrix Reloaded). Elemen pertama dari tiap-tiap vektor tersebut menunjukkan pendapatan dari pemutaran di Amerika Serikat (AS) sedangkan elemen keduanya menunjukkan pendapatan dari pemutaran internasional (non-AS). Sumber datanya dari Wikipedia.

Di latihan tersebut, Anda perlu menyatukan semuanya ke dalam sebuah vektor dan menjadikannya sebagai sebuah matriks.

Latihan 1.22

  • Gunakan c(the_matrix, the_matrix_reloaded) untuk menggabung dua vektor menjadi sebuah vektor. Namai hasilnya menjadi box_office.
  • Buatlah sebuah matriks 3 baris sehingga tiap-tiap barisnya merepresentasikan sebuah film. Gunakan matrix() untuk melakukannya. Argumen pertamanya adalah vektor box_office yang memuat pendapatan semua filmnya. Berikutnya, aturlah nrow = 2 dan byrow = TRUE. Namai hasilnya dengan matriks_the_matix.
# no pec # Pendapatan sekuel The Matrix (dalam jutaan dolar AS!) the_matrix <- c(172.077, 295.146) the_matrix_reloaded <- c(281.576, 460.271) # Buatlah vektor box_office box_office <- # Buatlah matriks_the_matrix matriks_the_matrix <- # Pendapatan sekuel The Matrix (dalam jutaan dolar AS!) the_matrix <- c(172.077, 295.146) the_matrix_reloaded <- c(281.576, 460.271) # Buatlah vektor box_office box_office <- c(the_matrix, the_matrix_reloaded) # Buatlah matriks_the_matrix matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE) msg <- "Jangan mengganti apapun pada variabel film `the_matrix` dan `the_matrix_reloaded`!" ex() %>% check_object("the_matrix", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("the_matrix_reloaded", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("box_office") %>% check_equal(incorrect_msg = "Apakah Anda sudah dengan benar menggabungkan `the_matrix` dan `the_matrix_reloaded` menjadi vektor `box_office`?") ex() %>% check_function("matrix") %>% { check_arg(., 'data') %>% check_equal(incorrect_msg = "Pastikan memasukkan argumen-argumen yang tepat untuk `matrix()`: `box_office`, `nrow = 2`, `by_row = TRUE`.") check_arg(., 'nrow') %>% check_equal(incorrect_msg = "Pastikan memasukkan argumen-argumen yang tepat untuk `matrix()`: `box_office`, `nrow = 2`, `by_row = TRUE`.") check_arg(., 'byrow') %>% check_equal(incorrect_msg = "Pastikan memasukkan argumen-argumen yang tepat untuk `matrix()`: `box_office`, `nrow = 2`, `by_row = TRUE`.") } ex() %>% check_object("matriks_the_matrix") %>% check_equal(incorrect_msg = "Apakah Anda sudah menggunakan hasil dari `matrix()` untuk membuat `matriks_the_matrix`?") success_msg("Jempol! Ayo lanjutkan ke pembahasan berikutnya.")
Pertama, box_office <- c(the_matrix, the_matrix_reloaded) akan menggabungkan semua nilai dalam vektor-vektor tersebut menjadi sebuah vektor dengan 4 elemen. Kedua, matrix(box_office, nrow = ..., byrow = ...) merupakan templat untuk perintah berikutnya.

Menamai Sebuah Matriks

Agar kita mudah mengingat apa saja yang terdapat dalam matriks_the_matrix, kita perlu memberikan nama baris-barisnya sebagai nama-nama film yang sesuai. Tak hanya memudahkan saja, penamaan tersebut juga bermanfaat ketika kita ingin memilih elemen-elemen matriks tersebut.

Serupa dengan vektor, kita dapat menamai baris dan kolom sebuah matriks. Templat perintah yang digunakan adalah seperti berikut.

rownames(matriks_ku) <- vektor_nama_baris
colnames(matriks_ku) <- vektor_nama_kolom

Di Latihan 1.23, saya telah menyiapkan dua vektor untuk Anda: judul dan wilayah. Anda akan memerlukan kedua vektor tersebut untuk menamai baris-baris dan kolom-kolom matriks_the_matrix.

Latihan 1.23

  • Gunakan rownames() untuk menamai baris-baris matriks_the_matrix dengan vektor judul.
  • Gunakan colnames() untuk memberikan nama kolom-kolom matriks_the_matrix dengan vektor wilayah.
  • Tampilkan matriks_the_matrix untuk melihat hasilnya.
# no pec # Pendapatan sekuel The Matrix (dalam jutaan dolar AS!) the_matrix <- c(172.077, 295.146) the_matrix_reloaded <- c(281.576, 460.271) # Membuat matriks matriks_the_matrix <- matrix(c(the_matrix, the_matrix_reloaded), nrow = 2, byrow = TRUE) # Vektor-vektor judul dan wilayah untuk penamaan judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") # Namai baris-barisnya dengan judul # Namai kolom-kolomya dengan wilayah # Tampilkan matriks akhirnya # Pendapatan sekuel The Matrix (dalam jutaan dolar AS!) the_matrix <- c(172.077, 295.146) the_matrix_reloaded <- c(281.576, 460.271) # Membuat matriks matriks_the_matrix <- matrix(c(the_matrix, the_matrix_reloaded), nrow = 2, byrow = TRUE) # Vektor-vektor judul dan wilayah untuk penamaan judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") # Namai baris-barisnya dengan judul rownames(matriks_the_matrix) <- judul # Namai kolom-kolomya dengan wilayah colnames(matriks_the_matrix) <- wilayah # Tampilkan matriks akhirnya matriks_the_matrix msg <- "Jangan mengganti apapun pada variabel film `the_matrix` dan `the_matrix_reloaded`!" ex() %>% check_object("the_matrix", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("the_matrix_reloaded", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) msg <- "Jangan mengubah isi `matriks_the_matrix`; fokuslah pada baris-baris dan kolom-kolomnya!" ex() %>% check_object("matriks_the_matrix") %>% check_equal(incorrect_msg = msg) msg <- "Jangan mengganti apapun tentang vektor-vektor `judul` dan `wilayah` yang sudah didefinisikan untuk Anda." ex() %>% check_object("judul", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("wilayah", undefined_msg = msg) %>% check_equal( incorrect_msg = msg) ex() %>% check_object("matriks_the_matrix") %>% check_equal(eq_condition = "equal",incorrect_msg = "Apakah Anda sudah mengatur nama baris dan kolom `matriks_the_matrix` dengan benar? Gunakan `rownames(matriks_the_matrix) <- judul` untuk nama baris-barisnya; lakukan hal yang sama untuk kolom-kolomnya.") ex() %>% check_output_expr("matriks_the_matrix", missing_msg = "Jangan lupa menampilkan `matriks_the_matrix` setelah Anda menamai baris-baris dan kolom-kolomnya.") success_msg("Hebat! Silakan beranjak ke pembahasan berikutnya.")
Anda dapat menggunakan rownames(matriks_the_matrix) <- judul untuk menamai baris-baris matriks_the_matrix. Lakukan hal yang sama untuk menamai kolom-kolomnya.

Menghitung Pendapatan Total Setiap Film

Dari hasil latihan sebelumnya, kita mendapatkan matriks_the_matrix seperti ini.

                         AS  non-AS
The Matrix          172.077 295.146
The Matrix Reloaded 281.576 460.271

Bagaimana kita mengetahui pendapatan total setiap filmnya? Caranya adalah dengan menjumlahkan pendapatan dari pemutaran di AS dan non-AS untuk setiap filmnya. Dengan kata lain, kita perlu menjumlahkan semua nilai di setiap barisnya.

Di R, fungsi rowSums() dapat digunakan untuk menentukan jumlah total setiap baris dari sebuah matriks. Fungsi ini menghasilkan sebuah vektor.

rowSums(matriks_ku)

Latihan 1.24

Hitunglah pendapatan total untuk kedua film dan jadikan hasilnya sebagai vektor pendapatan_total_film.

# no pec # Membuat matriks_the_matrix box_office <- c(172.077, 295.146, 281.576, 460.271) judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah)) # Menghitung pendapatan total pendapatan_total_film <- # Membuat matriks_the_matrix box_office <- c(172.077, 295.146, 281.576, 460.271) judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah)) # Menghitung pendapatan total pendapatan_total_film <- rowSums(matriks_the_matrix) msg <- "Jangan mengubah apapun dalam variabel-variabel `box_office` dan `matriks_the_matrix`!" ex() %>% check_object("box_office", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("matriks_the_matrix", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("pendapatan_total_film") %>% check_equal(incorrect_msg = "Gunakan `rowSums()` terhadap `matriks_the_matrix` dan jadikan hasilnya sebagai `pendapatan_total_film`.") success_msg("Bagus! Silakan lanjut ke pembahasan berikutnya.")
Perintah rowSums(matriks_the_matrix) menjumlahkan semua nilai dalam setiap baris, sehingga dapat digunakan untuk menghitung pendapatan total kedua film.

Menyisipkan Kolom

Di latihan sebelumnya, Anda telah membuat sebuah vektor pendapatan total untuk setiap film. Meskipun demikian, vektor tersebut belum menjadi bagian dari matriks_the_matrix.

Kita dapat menggunakan fungsi cbind() untuk menggabungkan sebuah matriks dengan vektor atau matriks lain, menurut kolomnya. Contohnya adalah seperti berikut.

matriks_besar <- cbind(matriks1, matriks2,
                       vektor1 ...)

Latihan 1.25

Sisipkan pendapatan_total_film ke matriks_the_matrix sebagai kolom baru. Buatlah hasilnya sebagai the_matrix_total. Gunakan fungsi cbind().

# no pec # Membuat matriks_the_matrix box_office <- c(172.077, 295.146, 281.576, 460.271) judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah)) # Menghitung pendapatan total pendapatan_total_film <- rowSums(matriks_the_matrix) # Sisipkan kolom ke matriks_the_matrix the_matrix_total <- # Membuat matriks_the_matrix box_office <- c(172.077, 295.146, 281.576, 460.271) judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah)) # Menghitung pendapatan total pendapatan_total_film <- rowSums(matriks_the_matrix) # Sisipkan kolom ke matriks_the_matrix the_matrix_total <- cbind(matriks_the_matrix, pendapatan_total_film) msg <- "Jangan mengubah apapun terhadap `box_office` dan `matriks_the_marix`!" ex() %>% check_object("box_office", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("matriks_the_matrix", undefined_msg = msg) %>% check_equal(, incorrect_msg = msg) ex() %>% check_object("pendapatan_total_film") %>% check_equal(incorrect_msg = "Jadikan hasil `rowSums(matriks_the_matrix)` sebagai `pendapatan_total_film`.") msg <- "Apakah Anda sudah dengan benar menggunakan `cbind()` untuk menambahkan `pendapatan_total_film` kepada `matriks_the_matrix`? Anda harus menginputkan `matriks_the_matrix` dan `pendapatan_total_film` secara terurut ke dalam `cbind()`. Matriks yang dihasilkan, `the_matrix_total`, seharusnya berisi dua baris dan tiga kolom." ex() %>% check_object("the_matriks_total") %>% check_equal(incorrect_msg = msg) success_msg("Mantap! Setelah menambahkan kolom ke matriks, kita selanjutnya akan belajar bagaimana menambahkan baris. Ayo lanjut ke bagian berikutnya.")
Anda harus menginputkan dua variabel berikut ke cbind(): matriks_the_matrix dan pendapatan_total_film, secara terurut. Jadikan hasilnya sebagai the_matrix_total.

Menyisipkan Baris

Sejauh ini, kita menggunakan dua judul film dari sekuel The Matrix. Padahal ketika tutorial ini ditulis, sekuel tersebut terdiri dari empat film. Dua film yang belum kita gunakan adalah The Matrix Revolutions dan The Matrix Resurrections. Oleh karena itu, kita akan menambahkan pendapatan yang dihasilkan oleh kedua film tersebut.

Untuk melakukannya, kita perlu menambahkan baris ke dalam matriks yang telah kita buat sebelumnya, matriks_the_matrix, dengan pendapatan dua film berikutnya.

Di R, fungsi rbind() bisa digunakan untuk menambahkan baris ke sebuah matriks. Contohnya adalah seperti ini.

rbind(matriks1, matriks2)

Editor dalam Latihan 1.26 telah memuat dua matriks, matriks_the_matrix dan matriks_the_matrix2, yang telah didefinisikan sebelumnya dan disediakan untuk Anda. Dengan demikian, Anda langsung dapat menggunakan kedua matriks tersebut. Berikut ini informasi mengenai kedua matriks tersebut.

  • matriks_the_matrix adalah matriks yang telah kita buat dan gunakan sebelumnya.
  • matriks_the_matrix2 berisi pendapatan yang dihasilkan dari dua film The Matrix berikutnya.

Anda dapat mengeksplorasi kedua matriks tersebut di dalam console agar dapat melihat elemen-elemennya dengan jelas.

Latihan 1.26

Gunakan rbind() untuk menggabungkan matriks_the_matrix dan matriks_the_matrix2 menurut barisnya, dengan urutan seperti itu. Jadikan hasilnya sebagai the_matrix_semua.

# Membuat matriks_the_matrix box_office <- c(172.077, 295.146, 281.576, 460.271) judul <- c("The Matrix", "The Matrix Reloaded") wilayah <- c("AS", "non-AS") matriks_the_matrix <- matrix(box_office, nrow = 2, byrow = TRUE, dimnames = list(judul, wilayah)) # Membuat matriks_the_matrix2 box_office2 <- c(139.314, 288.03, 37.687, 119.611) judul2 <- c("The Matrix Revolutions", "The Matrix Resurrections") matriks_the_matrix2 <- matrix(box_office2, nrow = 2, byrow = TRUE, dimnames = list(judul2, wilayah)) # remove all except all_wars_matrix rm(box_office) rm(judul) rm(wilayah) rm(box_office2) rm(judul2) # matriks_the_matrix dan matriks_the_matrix2 telah tersedia matriks_the_matrix matriks_the_matrix2 # Gabung kedua matriks tersebut menurut barisnya the_matrix_semua <- # matriks_the_matrix dan matriks_the_matrix2 telah tersedia matriks_the_matrix matriks_the_matrix2 # Gabung kedua matriks tersebut menurut barisnya the_matrix_semua <- rbind(matriks_the_matrix, matriks_the_matrix2) msg = "Jangan menimpa (membuat kembali) variabel-variabel yang telah disediakan untuk Anda (`matriks_the_matrix` dan `matriks_the_matrix2`)." ex() %>% check_object("matriks_the_matrix", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg) ex() %>% check_object("matriks_the_matrix2", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg) ex() %>% check_object("the_matrix_semua") %>% check_equal(incorrect_msg = "Apakah Anda menggunakan `rbind()` dengan benar untuk membuat `the_matrix_semua`? Fungsi `rbind()` secara terurut perlu dua argumen ini, `matriks_the_matrix` dan `matriks_the_matrix2`.") success_msg("Luar biasa! Berikutnya kita akan belajar tentang fungsi `colSums()`. Ayo lanjutkan!")
Gabungkan kedua matriks menurut barisnya seperti ini: rbind(matriks1, matriks2).

Menghitung Pendapatan Total

Di bagian sebelumnya, Anda telah dapat menjumlahkan semua nilai yang terdapat di tiap-tiap baris dengan menggunakan rowSums(). Apakah kita dapat menjumlahkan semua nilai dalam kolom? Bisa!

Kita dapat menjumlahkan semua nilai dalam kolom-kolom sebuah matriks dengan fungsi colSums(). Fungsi ini akan kita gunakan untuk menghitung pendapatan total sekuel The Matrix dari AS dan non-AS.

Editor dalam Latihan 1.27 telah menyediakan matriks the_matrix_semua untuk Anda. Silakan tikkan nama matriks ini untuk mengeksplorasinya.

Latihan 1.27

  • Hitunglah pendapatan total untuk wilayah AS dan non-AS, kemudian jadikan hasilnya sebagai pendapatan_total_wilayah. Anda dapat menggunakan fungsi colSums().
  • Tampilkan pendapatan_total_wilayah untuk mencermati hasilnya.
# Membuat the_matriks_semua box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611) judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections") wilayah <- c("AS", "non-AS") the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah)) # Hapus objek rm(box_office_semua) rm(judul_semua) rm(wilayah) # Matriks the_matrix_semua telah tersedia untuk Anda the_matrix_semua # Pendapatan total untuk AS dan non-AS pendapatan_total_wilayah <- # Tampilkan pendapatan_total_wilayah # Matriks the_matrix_semua telah tersedia untuk Anda the_matrix_semua # Pendapatan total untuk AS dan non-AS pendapatan_total_wilayah <- colSums(the_matrix_semua) # Tampilkan pendapatan_total_wilayah pendapatan_total_wilayah msg = "Jangan mengganti isi dari `the_matrix_semua`! Itu telah disediakan untuk Anda." ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(eq_condition = "equal", incorrect_msg = msg) ex() %>% check_function("colSums") %>% check_arg('x') %>% check_equal(incorrect_msg = "Apakah Anda menggunakan fungsi `colSums()` terhadap `the_matrix_semua`?") ex() %>% check_object("pendapatan_total_wilayah") %>% check_equal(incorrect_msg = "Apakah Anda dengan benar menjadikan hasil `colSums(the_matrix_semua)` sebagai `pendapatan_total_wilayah`?") ex() %>% check_output_expr("pendapatan_total_wilayah", missing_msg = "Jangan lupa untuk menampilkan `pendapatan_total_wilayah`!") success_msg("Bellissimo! Lanjut ke pembahasan berikutnya untuk belajar tentang pemilihan elemen-elemen matriks.")
Gunakan colSums() dengan argumen the_matrix_semua untuk menghitung total pendapatan setiap wilayahnya.

Pemilihan Elemen-Elemen Matriks

Seperti halnya vektor, kita juga dapat memilih elemen-elemen sebuah matriks dengan menggunakan tanda kurung siku [ ]. Bedanya dengan vektor, matriks berdimensi dua sehingga kita perlu memberikan identitas baris dan kolom di dalam tanda kurung untuk memilih elemen-elemennya. Identitas baris dan kolom tersebut perlu ditulis secara terurut dan dipisahkan dengan tanda koma. Contohnya seperti ini.

  • matriks_ku[1, 2] memilih elemen pada baris pertama dan kolom kedua.
  • matriks_ku[1:3, 4:7] menghasilkan sebuah matriks yang datanya merupakan data dari baris 1, 2, 3 dan kolom 4, 5, 6, 7 dalam matriks_ku.

Jika Anda ingin memilih semua elemen dalam baris atau kolom dari suatu matriks, Anda tidak perlu menuliskan bilangan sebelum atau setelah tanda koma. Misalnya seperti ini.

  • matriks_ku[1, ] memilih semua elemen dalam baris pertama.
  • matriks_ku[ , 4:6] memilih semua elemen dalam kolom keempat, kelima, dan keenam.

Nah, sekarang kita kembali ke data pendapatan sekuel film The Matrix, the_matrix_semua. Matriks tersebut telah disiapkan dalam editor pada Latihan 1.28.

Latihan 1.28

  • Pilihlah pendapatan dari wilayah non-AS untuk semua film (semua elemen kolom kedua dari the_matrix_semua), jadikan hasilnya sebagai non_as_semua.
  • Gunakan fungsi mean() untuk menghitung rerata pendapatan dari wilayah non-AS untuk semua film. Tampilkan hasilnya.
  • Sekarang, pilihlah pendapatan dari wilayah non-AS hanya untuk dua film pertama dari the_matrix_semua. Simpan hasilnya sebagai non_as_beberapa.
  • Gunakan mean() untuk menentukan rerata nilai-nilai dalam non_as_beberapa.
# Membuat the_matriks_semua box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611) judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections") wilayah <- c("AS", "non-AS") the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah)) # Hapus objek rm(box_office_semua) rm(judul_semua) rm(wilayah) # Matriks the_matrix_semua telah tersedia untuk Anda the_matrix_semua # Pilih pendapatan non-AS untuk semua film non_as_semua <- # Rerata pendapatan non-AS # Pilih pendapatan non-AS untuk dua film pertama non_as_beberapa <- # Rerata pendapatan non-AS untuk dua film pertama # Matriks the_matrix_semua telah tersedia untuk Anda the_matrix_semua # Pilih pendapatan non-AS untuk semua film non_as_semua <- the_matrix_semua[, 2] # Rerata pendapatan non-AS mean(non_as_semua) # Pilih pendapatan non-AS untuk dua film pertama non_as_beberapa <- the_matrix_semua[1:2, 2] # Rerata pendapatan non-AS untuk dua film pertama mean(non_as_beberapa) msg = "Jangan mengganti isi dari `the_matrix_semua`. Matriks ini telah disediakan untuk Anda." ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("non_as_semua") %>% check_equal(incorrect_msg = "Apakah Anda sudah memberikan semua nilai kolom kedua `the_matrix_semua` kepada `non_as_semua`? Anda dapat menggunakan `[, 2]` untuk melakukannya!") ex() %>% check_output_expr("mean(non_as_semua)", missing_msg = "Apakah Anda sudah menghitung rerata `non_as_semua` dengan menggunakan `mean(non_as_semua)`? Tampilkan hasilnya.") ex() %>% check_object("non_as_beberapa") %>% check_equal(incorrect_msg = "Apakah Anda sudah memberikan nilai-nilai baris pertama dan kedua dan kolom kedua `the_matrix_semua` kepada `non_as_beberapa`? Anda dapat menggunakan `[1:2, 2]` untuk melakukannya!") ex() %>% check_output_expr("mean(non_as_beberapa)", missing_msg = "Apakah Anda sudah menghitung rerata `non_as_beberapa` dengan menggunakan `mean(non_as_beberapa)`? Tampilkan hasilnya.") success_msg("Bagus! Lanjut ke pembelajaran berikutnya.")
Anda dapat memilih semua nilai dari baris kedua matriks_ku dengan matriks_ku[, 2]

Operasi Aritmetika pada Matriks

Kita dapat melakukan operasi-operasi aritmetika, seperti +, -, *, dan /, terhadap matriks. Misalnya, kita dapat mengalikan 2 dan semua elemen matriks_ku dengan perintah 2 * matriks_ku.

Kembali ke sekuel The Matrix. Dengan the_matrix_semua kita dapat mengetahui pendapatan dari semua film dalam sekuel tersebut. Sekarang kita akan memperkirakan berapa banyak orang yang menontoh film-film tersebut. Dengan menganggap harga setiap tiketnya 5 dolar AS, banyak penontonnya (dalam jutaan) dapat ditentukan dengan membagi the_matrix_semua dengan 5.

Latihan 1.29

  • Carilah banyaknya penonton (dalam jutaan) dengan membagi the_matrix_semua dengan 5. Jadikan hasilnya sebagai penonton.
  • Tampilkan penonton agar dapat diamati nilai-nilainya.
# Membuat the_matriks_semua box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611) judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections") wilayah <- c("AS", "non-AS") the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah)) # Hapus objek rm(box_office_semua) rm(judul_semua) rm(wilayah) # Matriks the_matrix_semua telah tersedia untuk Anda the_matrix_semua # Perkirakan banyaknya penonton (dalam jutaan) penonton <- # Tampilkan matriks penonton # Matriks the_matrix_semua telah tersedia untuk Anda the_matrix_semua # Perkirakan banyaknya penonton (dalam jutaan) penonton <- the_matrix_semua / 5 # Tampilkan matriks penonton penonton msg = "Jangan mengganti isi dari `the_matrix_semua`. Matriks ini telah disediakan untuk Anda." ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("penonton") %>% check_equal(incorrect_msg = "Sepertinya matriks `penonton` masih kurang tepat. Bagilah `the_matrix_semua` dengan 5 dan simpan hasilnya sebagai matriks `penonton`.") ex() %>% check_output_expr("penonton", missing_msg = "Jangan lupa untuk menampilkan `penonton` agar Anda bisa mencermatinya.") success_msg("Hebat! Apa yang menarik perhatian Anda? Begitu banyak orang internasional, sekitar 92 juta, yang menonton The Matrix Reloaded! Silakan lanjut ke bagian berikutnya.")
Pembagian matriks dengan sebuah bilangan dapat dilakukan dengan operator /.

Di Latihan 1.29, kita mengasumsikan bahwa harga tiket setiap filmnya sama. Karena film-film tersebut dirilis pada waktu yang berbeda-beda, tentu harga tiketnya bisa berbeda-beda pula. Harga tiket dapat naik seiring berjalannya waktu.

Sekarang kita buat sebuah matriks harga_tiket yang elemen-elemennya ditunjukkan seperti berikut.

                          AS non-AS
The Matrix               4.0    4.0
The Matrix Reloaded      4.5    4.5
The Matrix Revolutions   5.4    5.4
The Matrix Resurrections 6.0    6.0

Banyaknya penonton (dalam jutaan) dapat ditentukan dengan membagi the_matriks_semua dengan harga_tiket. Pembagian ini menghasilkan sebuah matriks yang elemen-elemennya merupakan hasil pembagian setiap elemen matriks pertama dengan elemen yang bersesuaian dari matriks kedua.

Latihan 1.30

  • Perkirakan banyaknya penonton AS dan non-AS untuk semua film dengan membagi the_matrix_semua dengan harga_tiket. Buatlah hasilnya menjadi matriks penonton_baru.
  • Dari matriks penonton_baru, pilihlah semua elemen kolom kedua, yang merupakan banyak penonton internasional (non-AS). Simpan hasilnya menjadi penonton_baru_int.
  • Hitunglah rerata banyaknya penonton internasional dan tampilkan hasilnya.
# Membuat the_matriks_semua dan harga_tiket box_office_semua <- c(172.077, 295.146, 281.576, 460.271, 139.314, 288.03, 37.687, 119.611) judul_semua <- c("The Matrix", "The Matrix Reloaded", "The Matrix Revolutions", "The Matrix Resurrections") wilayah <- c("AS", "non-AS") the_matrix_semua <- matrix(box_office_semua, nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah)) harga_tiket <- matrix(c(4.0, 4.0, 4.5, 4.5, 5.4, 5.4, 6.0, 6.0), nrow = 4, byrow = TRUE, dimnames = list(judul_semua, wilayah)) # Hapus objek rm(box_office_semua) rm(judul_semua) rm(wilayah) # Matriks the_matrix_semua dan harga_tiket telah tersedia untuk Anda the_matrix_semua harga_tiket # Perkirakan banyaknya penonton (dalam jutaan) penonton_baru <- # Penonton internasional (dalam jutaan) penonton_baru_int <- # Rerata banyak penonton internasional (dalam jutaan) # Matriks the_matrix_semua dan harga_tiket telah tersedia untuk Anda the_matrix_semua harga_tiket # Perkirakan banyaknya penonton (dalam jutaan) penonton_baru <- the_matrix_semua / harga_tiket # Penonton internasional (dalam jutaan) penonton_baru_int <- penonton_baru[, 2] # Rerata banyak penonton internasional (dalam jutaan) mean(penonton_baru_int) msg = "Jangan mengganti isi dari `the_matrix_semua`. Matriks ini telah disediakan untuk Anda." ex() %>% check_object("the_matrix_semua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("harga_tiket", undefined_msg = msg) %>% check_equal(incorrect_msg = msg) ex() %>% check_object("penonton_baru") %>% check_equal(incorrect_msg = "Apakah Anda sudah membuat matriks `penonton_baru` secara akurat? Anda seharusnya membagi `the_matrix_semua` dengan `harga_tiket` untuk mendapatkannya.") ex() %>% check_object("penonton_baru_int") %>% check_equal(incorrect_msg = "Untuk membuat `penonton_baru_int`, Anda seharusnya memilih kolom kedua `penonton_baru`. Anda dapat menggunakan `[,2]` untuk melakukannya!") ex() %>% check_output_expr("mean(penonton_baru_int)", missing_msg = "Setelah Anda mendapatkan `penonton_baru_int`, Anda dapat menggunakan `mean()` Untuk menghitung rerata banyaknya penonton internasional. Pastikan untuk menampilkan hasilnya.") success_msg("Luar biasa! Latihan ini adalah latihan terakhir di subbab matriks. Di pemberhentian berikutnya, kita akan belajar faktor!")
- Untuk mendapatkan banyaknya penonton internasional, gunakan penonton_baru[, 2]. - Rerata banyaknya penonton internasional dapat dihitung dengan fungsi mean().

Anda telah mengetahui apa yang dilakukan operator pembagian / terhadap dua matriks dalam Latihan 1.30. Bagaimana dengan operator perkalian *?

Ketika kita menghitung matriks1 * matriks2, kita akan mendapatkan sebuah matriks yang elemen-elemennya merupakan hasil kali setiap elemen matriks1 dengan elemen yang bersuaian dari matriks2.

Bagi Anda yang sudah familier dengan perkalian matriks, tentuk hal tersebut bukan merupakan perkalian matriks yang standar. Untuk perkalian yang standar, R menggunakan operator %*%.

Untuk lebih jelasnya, kita dapat menuliskan kode berikut untuk dijalankan R agar kita bisa membedakan operator * dan %*%.

matriks1 <- matrix(1:4, nrow = 2, byrow = TRUE)
matriks2 <- matrix(5:8, nrow = 2, byrow = TRUE)
matriks1 * matriks2
matriks1 %*% matriks2

Menurut Anda, bagaimana hasilnya? Silakan cermati hasil kedua operasi tersebut di bawah ini.

> matriks1 <- matrix(1:4, nrow = 2, byrow = TRUE)
> matriks1
     [,1] [,2]
[1,]    1    2
[2,]    3    4
> matriks2 <- matrix(5:8, nrow = 2, byrow = TRUE)
> matriks2
     [,1] [,2]
[1,]    5    6
[2,]    7    8
> matriks1 * matriks2
     [,1] [,2]
[1,]    5   12
[2,]   21   32
> matriks1 %*% matriks2
     [,1] [,2]
[1,]   19   22
[2,]   43   50

Uji Pengetahuan Anda

Jawablah soal-soal dalam kuis Matriks berikut dengan tepat!

Kode ini digunakan untuk membuat matriks 4 kolom. Isilah bagian yang kosong!

matrix(21:40, nrow = , byrow = TRUE)

Vektor v akan dijadikan nama untuk kolom-kolom matriks m. Lengkapilah bagian yang kosong!

() <-

Vektor v akan disisipkan sebagai kolom yang paling kiri di matriks m. Lengkapi kode berikut!

cbind(, )

Perintah yang digunakan untuk menjumlahkan semua elemen dalam setiap baris sebuah matriks adalah ...

Kode untuk memilih kolom ketiga matriks m adalah ...