Vektor
Halo, selamat datang di dunia vektor! Subbab ini akan mengajak Anda berjalan-jalan, secara harfiah, dan menganalisis datanya dengan menggunakan vektor di R. Oleh karena itu, Anda akan belajar membuat vektor-vektor di R, menamai vektor-vektor tersebut, memilih elemen-elemennya, dan membandingkan beberapa vektor yang berbeda. Ayo kita mulai perjalanan di dunia vektor dengan penuh semangat!
Membuat Sebuah Vektor
Seperti yang telah disinggung di atas, di subbab ini kita akan menganalisis data langkah-langkah kaki yang Anda lakukan setiap harinya. Analisis tersebut akan banyak menggunakan vektor.
Vektor merupakan himpunan berdimensi satu yang dapat menampung data numerik, karakter, atau logika. Dengan kata lain, vektor merupakan sebuah alat sederhana untuk menyimpan data. Misalnya, Anda dapat menyimpan banyaknya langkah yang telah Anda lakukan setiap harinya dalam satu minggu.
Untuk membuat sebuah vektor di R, kita gunakan fungsi c()
. Kita masukkan elemen-elemen vektornya ke dalam tanda kurung tersebut dan kita pisahkan tiap elemennya dengan koma. Misalnya adalah seperti ini.
vektor_numerik <- c(1, 2, 3)
vektor_karakter <- c("a", "b", "c")
Mudah, kan? Sekarang mari buat vektor_boolean
dalam Latihan 1.8.
Latihan 1.8
Lengkapilah kode berikut sehingga vektor_boolean
memiliki tiga elemen, yang secara berturut-turut adalah TRUE
, FALSE
, dan TRUE
.
# no pec
vektor_numerik <- c(3, 30, 81)
vektor_karakter <- c("a", "b", "c")
# Lengkapilah kode berikut
vektor_boolean <-
vektor_numerik <- c(3, 30, 81)
vektor_karakter <- c("a", "b", "c")
# Lengkapilah kode berikut
vektor_boolean <- c(TRUE, FALSE, TRUE)
msg <- "Jangan mengubah kode yang mendefinisikan `vektor_numerik` dan `vektor_karakter`!"
ex() %>% check_object("vektor_numerik", undefined_msg = msg) %>% check_equal(, incorrect_msg = msg)
ex() %>% check_object("vektor_karakter", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("vektor_boolean") %>% check_equal(incorrect_msg = "Pastikan Anda telah memberikan nilai-nilai yang benar kepada `vektor_boolean`. Gunakan `c(TRUE, FALSE, TRUE)`. Jangan memberikan tanda petik dua pada `TRUE` dan `FALSE`! Pastikan juga urutannya sama seperti yang diminta dalam soal.")
success_msg("Mantap! Perhatikan bahwa pemberian spasi setelah tanda koma dalam fungsi `c()` membuat kodenya mudah dibaca. Mari kita lanjutkan ke pembahasan berikutnya.")
c(TRUE, FALSE, TRUE)
kepada vektor_boolean
dengan menggunakan operator <-
Anda ingin memiliki gaya hidup yang sehat sehingga menargetkan untuk berjalan 10.000 langkah setiap harinya. Untuk menganalisis banyak langkah yang telah Anda lakukan, Anda memutuskan untuk mencatatnya selama dua minggu. Yang Anda catat adalah selisih banyak langkah dengan target Anda, yaitu 10.000.
Untuk minggu pertama:
- pada hari Senin Anda lebih 1.205 langkah;
- Selasa Anda lebih 823 langkah;
- Rabu Anda kurang 340 langkah;
- Kamis Anda kurang 541 langkah;
- Jumat Anda kurang 259 langkah;
- Sabtu Anda lebih 662 langkah; dan
- Minggu Anda lebih 1.845 langkah.
Untuk minggu kedua:
- Pada hari Senin Anda lebih 901 langkah;
- Selasa Anda lebih 1.043 langkah;
- Rabu Anda lebih 56 langkah;
- Kamis Anda kurang 101 langkah;
- Jumat Anda kurang 404 langkah;
- Sabtu Anda lebih 772 langkah; dan
- Minggu Anda lebih 2.410 langkah.
Agar data tersebut dapat digunakan di R, Anda memutuskan untuk menyimpannya ke dalam variabel minggu_pertama
dan minggu_kedua
. Lakukan hal ini di Latihan 1.9!
Latihan 1.9
Masukkan data lebih/kurangnya langkah Anda terhadap 10.000 di minggu kedua ke dalam variabel minggu_kedua
: Anda lebih 901, kemudian lebih 1.043, lebih 56, kurang 101, kurang 404, lebih 772, dan lebih 2.410.
# no pec
# Capaian langkah di minggu pertama
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
# Capaian langkah di minggu kedua
minggu_kedua <-
# Capaian langkah di minggu pertama
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
# Capaian langkah di minggu kedua
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
ex() %>% check_object("minggu_pertama") %>% check_equal(incorrect_msg = "Pastikan elemen-elemen dalam `minggu_pertama` benar.")
ex() %>% check_object("minggu_kedua") %>% check_equal(incorrect_msg = "Pastikan elemen-elemen `minggu_kedua` sudah tepat. Periksa juga urutannya!")
success_msg("Luar biasa! Ingat bahwa Anda dapat melihat isi setiap vektornya dengan mentikkan namanya kemudian klik Run.")
minggu_kedua
. Silakan masukkan bilangan-bilangan seperti yang disebutkan dalam soal. Tanda negatif menunjukkan banyaknya langkah yang kurang dari targetnya.Membuat Sebuah Vektor Bernama
Penting bagi kita untuk dapat melihat data dengan jelas. Penting juga bagi kita untuk dapat memahami setiap elemen dalam vektor dan menghubungkannya dengan konteks datanya.
Dalam latihan sebelumnya, kita telah membuat vektor yang elemen-elemennya merujuk pada nama hari. Akan tetapi, vektor tersebut belum menunjukkan nama-nama harinya dengan jelas. Di sini kita akan memberikan nama kepada elemen-elemen dalam vektor tersebut.
Kita dapat memberi nama kepada elemen-elemen vektor dengan menggunakan fungsi names()
. Contohnya seperti ini.
contoh_vector <- c("Agus Bagus", "Mahasiswa")
names(contoh_vector) <- c("Nama", "Pekerjaan")
Kode tersebut membuat sebuah vektor contoh_vektor
dan memberikan nama kepada setiap elemennya. Elemen pertamanya diberi nama Nama
dan elemen keduanya diberi nama Pekerjaan
. Ketika kode tersebut dicetak dalam console, kita mendapatkan luaran seperti berikut.
Nama Pekerjaan
"Agus Bagus" "Mahasiswa"
Latihan 1.10
Kode dalam editor menamai elemen-elemen minggu_pertama
dengan nama-nama hari dalam seminggu. Lakukan juga untuk variabel minggu_kedua
.
# no pec
# Capaian langkah minggu pertama setiap harinya
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
# Capaian langkah minggu kedua setiap harinya
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
# Pasangkan nama hari sebagai nama minggu_pertama
names(minggu_pertama) <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
# Pasangkan nama hari sebagai nama minggu_kedua
# Capaian langkah minggu pertama setiap harinya
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
# Capaian langkah minggu kedua setiap harinya
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
# Pasangkan nama hari sebagai nama minggu_pertama
names(minggu_pertama) <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
# Pasangkan nama hari sebagai nama minggu_kedua
names(minggu_kedua) <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
ex() %>% check_object("minggu_pertama") %>% check_equal(incorrect_msg = "Jangan mengubah nilai dalam `minggu_pertama`; itu disediakan untuk Anda.")
ex() %>% check_object("minggu_kedua") %>% check_equal(incorrect_msg = "Jangan mengubah nilai dalam `minggu_kedua`; itu disediakan untuk Anda.")
ex() %>% check_object("minggu_pertama") %>% check_equal(eq_condition = 'equal', incorrect_msg = "Jangan mengganti nama elemen-elemen `minggu_pertama`; fokuslah kepada `minggu_kedua`!")
ex() %>% check_object("minggu_kedua") %>% check_equal(eq_condition = 'equal',incorrect_msg = "Pastikan bahwa Anda memberikan nama `minggu_kedua` dengan benar. Gunakan vektor yang sama untuk menamai `minggu_pertama`.")
success_msg("Kerja bagus! Lanjut ke pembahasan berikutnya.")
names(minggu_kedua)
untuk menamai elemen-elemen vektor minggu_kedua
. Namailah dengan vektor nama-nama hari.Apakah Anda merasakan adanya kekurangefisienan kode di dalam Latihan 1.10? Kita menuliskan vektor nama-nama hari sampai dua kali. Proses tersebut dapat kita buat lebih efisien dengan menggunakan variabel!
Kita dapat membuat variabel yang berisi nama-nama hari dalam seminggu kemudian memasangkannya sebagai nama elemen-elemen minggu_pertama
dan minggu_kedua
. Dengan cara seperti ini, kita dapat menggunakan kembali variabel tersebut.
Latihan 1.11
Sebuah variabel vektor_hari
telah tersedia di dalam editor. Gunakan variabel ini untuk menamai elemen-elemen minggu_pertama
dan minggu_kedua
.
# no pec
# Langkah minggu pertama setiap harinya
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
# Langkah minggu kedua setiap harinya
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
# Variabel nama-nama hari
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
# Pasangkan nama-nama hari kepada minggu_pertama dan minggu_kedua
names(minggu_pertama) <-
names(minggu_kedua) <-
# Langkah minggu pertama setiap harinya
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
# Langkah minggu kedua setiap harinya
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
# Variabel nama-nama hari
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
# Pasangkan nama-nama hari kepada minggu_pertama dan minggu_kedua
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
msg <- "Jangan mengubah `minggu_pertama`, `minggu_kedua` atau `vektor_hari`."
ex() %>% check_object("minggu_pertama", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama") %>% check_equal(incorrect_msg = "Pastikan untuk memasangkan `vektor_hari` sebagai nama `minggu_pertama`.", eq_condition = "equal",)
ex() %>% check_object("minggu_kedua") %>% check_equal(eq_condition = "equal", incorrect_msg = "Pastikan untuk memasangkan `vektor_hari` sebagai nama `minggu_kedua`.")
success_msg("Bagus! Pelajarannya, cobalah untuk menghindari duplikasi setiap waktu. Selanjutnya mari kita belajar bagaimana melakukan operasi artimetika terhadap vektor!")
names(minggu_pertama) <- vektor_hari
untuk menamai minggu_pertama
. Lakukan cara yang sama untuk minggu_kedua
Operasi Aritmetika pada Vektor
Sampai di sini, kita telah memiliki data capaian langkah di minggu pertama dan kedua yang disimpan ke dalam vektor-vektor yang setiap elemennya bernama. Data itu selanjutnya dapat kita analisis lebih lanjut untuk menjawab tiga pertanyaan berikut.
- Berapakah total kekurangan/kelebihan langkah Anda (dari 10.000) per harinya dalam dua minggu tersebut?
- Secara keseluruhan, banyaknya langkah Anda apakah sudah memenuhi target 10.000 langkah per hari?
- Bagaimana perbandingan performa di minggu pertama dan kedua?
Untuk menjawab pertanyaan-pertanyaan tersebut, kita perlu melakukan operasi artimetika terhadap vektor.
Apa yang terjadi jika kita menjumlahkan dua vektor? Operasi tersebut akan menjumlahkan elemen vektor pertama dengan elemen yang bersesuaian di vektor kedua. Contohnya, tiga ekspresi berikut ekuivalen.
c(1, 2, 3) + c(4, 5, 6)
c(1 + 4, 2 + 5, 3 + 6)
c(5, 7, 9)
Kita juga dapat melakukan perhitungan terhadap variabel-variabel yang merepresentasikan vektor.
a <- c(1, 2, 3)
b <- c(4, 5, 6)
c <- a + b
Mari berlatih penjumlahan vektor di dalam Latihan 1.12.
Latihan 1.12
- Jumlahkan variabel
vektor_a
danvektor_b
dan jadikan hasilnya sebagaivektor_total
. - Lihat hasilnya dengan mencetak
vektor_total
.
# no pec
vektor_a <- c(1, 2, 3)
vektor_b <- c(4, 5, 6)
# Jumlahkan vektor_a dan vektor_b
vektor_total <-
# Cetaklah vektor_total
vektor_a <- c(1, 2, 3)
vektor_b <- c(4, 5, 6)
# Jumlahkan vektor_a dan vektor_b
vektor_total <- vektor_a + vektor_b
# Cetaklah vektor_total
vektor_total
msg <- "Jangan mengubah isi `vektor_a` maupun `vektor_b`!"
ex() %>% check_object("vektor_a", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("vektor_b", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("vektor_total") %>% check_equal(incorrect_msg = "Pastikan bahwa `vektor_total` memuat hasil penjumlahan `vektor_a` dan `vektor_b`.")
ex() %>% check_output_expr("vektor_total", missing_msg = "Jangan lupa untuk mencetak `vektor_total`! Cukup tikkan `vektor_total` pada baris baru.")
success_msg("Hebat! Lanjutkan ke materi berikutnya.")
+
untuk menjumlahkan vektor_a
dan vektor_b
. Gunakan <-
untuk menjadikan hasil penjumlahan tersebut sebagai nilai vektor_total
Sekarang kita telah mengetahui bagaimana menjumlahkan dua vektor. Selanjutnya, kita akan menggunakan penjumlahan vektor tersebut untuk menjawab permasalahan pertama: berapakah total kekurangan/kelebihan langkah Anda (dari 10.000) per harinya dalam dua minggu? Untuk menjawab ini, kita perlu menjumlahkan kekurangan/kelebihan langkah setiap harinya di minggu pertama dengan minggu kedua.
Di R, kita cukup menjumlahkan minggu_pertama
dan minggu_kedua
.
Latihan 1.13
Berilah nilai variabel total_harian
sebagai total kekurangan/kelebihan langkah per harinya dalam dua minggu.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Memberikan hasil total kekurangan/kelebihan langkah per harinya kepada total_harian
total_harian <-
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Memberikan hasil total kekurangan/kelebihan langkah per harinya kepada total_harian
total_harian <- minggu_pertama + minggu_kedua
msg = "Jangan mengubah definisi dan penamaan `minggu_pertama` dan `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal( incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg) %>% check_equal(eq_condition = "equal", incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal", incorrect_msg = msg)
ex() %>% check_object("total_harian") %>% check_equal(incorrect_msg = "Jangan lupa untuk memberikan hasil penjumlahan `minggu_pertama` and `minggu_kedua` kepada `total_harian`.")
success_msg("Bagus! Untuk melihat nilai total_harian
, Anda dipersilakan untuk mencetaknya.")
total_harian
Berdasarkan latihan sebelumnya, kita dapat mencermati bahwa ada hari yang banyak total langkahnya lebih dan ada hari yang kurang. Sekarang, kita ingin tahu apakah secara total target 10.000 langkah per hari sudah terpenuhi selama dua minggu tersebut.
Keingintahuan tersebut dapat dijawab dengan menggunakan fungsi sum()
. Fungsi ini menjumlahkan semua elemen dalam sebuah vektor. Misalnya, untuk menentukan jumlah total kelebihan/kekurangan langkah di minggu pertama, kita dapat menggunakan kode berikut.
total_minggu_pertama <- sum(minggu_pertama)
Latihan 1.14
- Tentukan jumlah total kelebihan/kekurangan langkah di minggu kedua dan simpan hasilnya sebagai
total_minggu_kedua
. - Sekarang Anda memiliki jumlah total di minggu pertama dan kedua. Gunakan nilai tersebut untuk menghitung jumlah totalnya di kedua minggu tersebut dan simpan hasil tersebut sebagai
total_dua_minggu
. - Tampilkan nilai dari
total_dua_minggu
.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Total kelebihan/kekurangan langkah di minggu pertama
total_minggu_pertama <- sum(minggu_pertama)
# Total kelebihan/kekurangan langkah di minggu kedua
total_minggu_kedua <-
# Total keseluruhan di dua minggu
total_dua_minggu <-
# Cetak nilai total_dua_minggu
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Total kelebihan/kekurangan langkah di minggu pertama
total_minggu_pertama <- sum(minggu_pertama)
# Total kelebihan/kekurangan langkah di minggu kedua
total_minggu_kedua <- sum(minggu_kedua)
# Total keseluruhan di dua minggu
total_dua_minggu <- total_minggu_pertama + total_minggu_kedua
# Cetak nilai total_dua_minggu
total_dua_minggu
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("total_minggu_pertama") %>% check_equal(incorrect_msg = "Pastikan untuk memberikan nilai `total_minggu_pertama` sebagai jumlah dari `minggu_pertama`.")
ex() %>% check_object("total_minggu_kedua") %>% check_equal(incorrect_msg = "Pastikan untuk memberikan nilai `total_minggu_kedua` sebagai jumlah dari `minggu_kedua`.")
ex() %>% check_object("total_dua_minggu") %>% check_equal(incorrect_msg = "Pastikan untuk memberi nilai `total_dua_minggu` sebagai penjumlahan dua vektor total lainnya: `total_minggu_pertama` dan `total_minggu_kedua`.")
ex() %>% check_output_expr("total_dua_minggu", missing_msg = "Jangan lupa untuk menuliskan `total_dua_minggu` pada baris baru untuk menampilkan nilainya.")
success_msg("Hebat! Secara keseluruhan, Anda ternyata telah memenuhi target 10.000 langkah per hari.")
sum()
untuk menentukan jumlah total minggu_kedua
. Variabel total_dua_minggu
merupakan penjumlahan dari jumlah total di minggu pertama dan kedua.Selamat! Anda telah memenuhi target 10.000 langkah per harinya. Apakah Anda sudah puas dengan informasi tersebut? Sekarang mari kita analisis per minggunya. Apakah performa Anda dalam berjalan kaki meningkat? Dengan kata lain, apakah banyaknya langkah Anda di minggu kedua lebih besar (atau >
) daripada minggu pertama? Mari kita selidiki dalam Latihan 1.15!
Latihan 1.15
- Hitunglah
total_minggu_pertama
dantotal_minggu_kedua
dengan menggunakan fungsisum()
. - Periksalah apakah total langkah di minggu kedua lebih dari minggu pertama. Cetaklah hasilnya.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Total kelebihan/kekurangan langkah
total_minggu_pertama <-
total_minggu_kedua <-
# Periksa apakah ada peningkatan
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Total kelebihan/kekurangan langkah
total_minggu_pertama <- sum(minggu_pertama)
total_minggu_kedua <- sum(minggu_kedua)
# Periksa apakah ada peningkatan
total_minggu_kedua > total_minggu_pertama
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("total_minggu_pertama") %>% check_equal(incorrect_msg = "Pastikan untuk memberikan nilai `total_minggu_pertama` sebagai jumlah dari `minggu_pertama`.")
ex() %>% check_object("total_minggu_kedua") %>% check_equal(incorrect_msg = "Pastikan untuk memberikan nilai `total_minggu_kedua` sebagai jumlah dari `minggu_kedua`.")
ex() %>% check_output_expr("total_minggu_kedua > total_minggu_pertama",missing_msg = "Apakah Anda sudah membandingkan dengan benar? Untuk memeriksa apakah `total_minggu_kedua` lebih besar dari `total_minggu_pertama`, Anda dapat menggunakan `total_minggu_kedua > total_minggu_pertama`.")
success_msg("Bagus! Sekarang lanjutkan ke pembahasan berikutnya.")
10 > 4
. Kode itu akan menghasilkan sebuah nilai logika (TRUE
atau FALSE
).Memilih Elemen Vektor
Akan sangat berguna apabila kita dapat memilih satu atau lebih elemen vektor. Untuk melakukannya di R, kita menggunakan tanda kurung siku. Misalnya, jika kita ingin memilih elemen kelima dari vektor minggu_pertama
, kita tuliskan minggu_pertama[5]
.
Bagaimana jika kita ingin memilih lebih dari satu elemen? Caranya serupa, tetapi di dalam tanda kurung sikunya kita isikan vektor yang berisi urutan elemen-elemennya. Jika kita ingin memilih elemen keempat, kelima, keenam, dan ketujuh dari vektor minggu_pertama
, kita cukup tikkan minggu_pertama[4:7]
. Tanda titik dua :
tersebut merupakan perintah untuk mehasilkan bilangan asli mulai dari 4 sampai 7. Patut diperhatikan juga bahwa 4:7
berada langsung di dalam tanda kurung siku.
Latihan 1.16
Pilihlah kelebihan/kekurangan langkah di hari Senin, Selasa, Rabu, Kamis, dan Jumat dari minggu_kedua
dan simpan hasilnya sebagai hari_kerja_minggu_kedua
. Gunakan operator :
untuk memudahkan Anda.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Definisikan sebuah variabel berdasarkan pilihannya
hari_kerja_minggu_kedua <-
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Definisikan sebuah variabel berdasarkan pilihannya
hari_kerja_minggu_kedua <- minggu_kedua[1:5]
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("hari_kerja_minggu_kedua") %>% check_equal(incorrect_msg = "Sepertinya `hari_kerja_minggu_kedua` tidak memuat nilai-nilai yang tepat dari `minggu_kedua`. Anda dapat menggunakan vektor `1:5` di dalam tanda kurung siku.")
success_msg("Anda berhasil! Operator titik dua sangatlah berguna dan sering digunakan dalam pemrograman R. Ingatlah operator itu baik-baik!")
minggu_kedua
dengan menggunakan 1:5
yang diletakkan di dalam kurung siku. Buatlah hasilnya sebagai hari_kerja_minggu_kedua
Selain dengan menggunakan urutan elemen-elemennya, pemilihan juga dapat dilakukan dengan menggunakan nama elemen-elemennya. Misalnya, kode minggu_kedua["Minggu"]
digunakan untuk memilih elemen ketujuh dari vektor minggu_kedua
karena "Minggu"
merupakan nama elemen ketujuh vektor tersebut.
Seperti yang telah kita lakukan sebelumnya, kita juga dapat menggunakan nama-nama elemen untuk memilih lebih dari satu elemen vektor. Misalnya adalah minggu_kedua[c("Sabtu", "Minggu")
.
Latihan 1.17
- Pilihlah tiga elemen pertama vektor
minggu_kedua
dengan menggunakan nama elemennya:"Senin"
,"Selasa"
, dan"Rabu"
. Buatlah hasil pemilihan tersebut sebagai variabel baru,awal_minggu_kedua
. - Hitunglah rerata nilai-nilai dalam
awal_minggu_kedua
dengan menggunakan fungsimean()
. Cetaklah hasilnya agar nilai reratanya dapat dilihat.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Pilihlah elemen-elemen yang bernama Senin, Selasa, dan Rabu
awal_minggu_kedua <-
# Hitung rerata dari elemen-elemen yang terpilih
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Pilihlah elemen-elemen yang bernama Senin, Selasa, dan Rabu
awal_minggu_kedua <- minggu_kedua[c("Senin", "Selasa", "Rabu")]
# Hitung rerata dari elemen-elemen yang terpilih
mean(awal_minggu_kedua)
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("awal_minggu_kedua") %>% check_equal(incorrect_msg = "Sepertinya `awal_minggu_kedua` tidak memuat tiga elemen pertama `minggu_kedua`. Anda dapat menggunakan `c(\"Senin\", \"Selasa\", \"Rabu\")` di dalam kurung siku untuk melakukannya.")
ex() %>% check_output_expr("mean(awal_minggu_kedua)", missing_msg = "Sudahkah Anda menghitung rerata nilai-nilai dalam `awal_minggu_kedua` dan mencetaknya? Gunakan `mean(awal_minggu_kedua)`.")
success_msg("Kerja hebat! Selain memilih elemen-elemen vektor dengan indeks dan namanya, kita juga dapat memilihnya dengan perbandingan. Pembahasan berikutnya akan menjelaskan bagaimana caranya!")
c("Senin", "Selasa", "Rabu")
yang ditempatkan di dalam kurung siku untuk memilih elemen-elemen vektornya. Anda dapat menggunakan mean(awal_minggu_kedua)
untuk menghitung rerata nilai-nilai dalam awal_minggu_kedua
.Pemilihan dengan Perbandingan
Dengan menggunakan operator-operator persamaan atau pertidaksamaan, kita juga dapat memilih nilai-nilai dalam sebuah vektor. Operator-operator tersebut adalah sebagai berikut.
<
untuk kurang dari>
untuk lebih dari<=
untuk kurang dari atau sama dengan>=
untuk lebih dari atau sama dengan==
untuk sama dengan!=
untuk tidak sama dengan
Operator-operator tersebut dapat digunakan untuk membandingkan dua bilangan. Misalnya, 10 < 4
akan menghasilkan FALSE
. Menariknya, operator tersebut juga dapat digunakan untuk membandingkan sebuah vektor dengan bilangan. Misalnya adalah seperti ini.
c(1, 2, 3) >= 2
[1] FALSE TRUE TRUE
Perintah tersebut menguji setiap elemen dalam vektor apakah kondisi yang dinyatakan operator logikanya TRUE
atau FALSE
.
Latihan 1.18
- Pilihlah elemen-elemen vektor
minggu_kedua
yang positif dan jadikan hasilnya sebagaiminggu_kedua_terpilih
. - Cetaklah hasilnya sehingga Anda bisa melihat semua elemen-elemennya. Cetakan tersebut memberikan informasi apakah banyaknya langkah Anda melebihi 10.000 (
TRUE
) atau kurang dari 10.000 (FALSE
).
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Hari apa saja langkah Anda melebihi 10.000?
minggu_kedua_terpilih <-
# Tampilkan vektor minggu_kedua_terpilih
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Hari apa saja langkah Anda melebihi 10.000?
minggu_kedua_terpilih <- minggu_kedua > 0
# Tampilkan vektor minggu_kedua_terpilih
minggu_kedua_terpilih
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua_terpilih") %>% check_equal(incorrect_msg = "Sepertinya `minggu_kedua_terpilih` tidak memuat elemen-elemen yang tepat.")
ex() %>% check_output_expr("minggu_kedua_terpilih", missing_msg = "Jangan lupa untuk mencetak `minggu_kedua_terpilih` dengan menuliskan nama variabelnya pada baris baru.")
success_msg("Jempol! Anda telah mampu menggunakan perbandingan untuk menguji setiap elemen dalam sebuah vektor. Pengujian seperti ini akan kita gunakan pada pembahasan berikutnya.")
minggu_kedua
apakah lebih dari nol. Caranya adalah dengan memberikan perintah, seperti contoh_vektor > 0
.Pengujian elemen-elemen vektor dengan menggunakan perbandingan membuka jalan kita selanjutnya. Kita akan mencari hari-hari di minggu kedua yang nilainya positif, yaitu ketika banyaknya langkah Anda melebihi 10.000. Untuk melakukannya, kita gunakan kode berikut.
minggu_kedua[minggu_kedua_terpilih]
R tahu apa yang akan dilakukan ketika kita menaruh sebuah vektor logika di dalam kurung siku: R akan memilih elemen-elemen minggu_kedua
yang yang bersesuaian dengan nilai TRUE
dalam minggu_kedua_terpilih
.
Latihan 1.19
Gunakan vektor minggu_kedua_terpilih
di dalam tanda kurung siku untuk memilih elemen-elemen minggu_kedua
yang positif. Jadikan hasilnya sebagai variabel langkahLebih_minggu_kedua
.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Apakah setiap harinya langkah Anda melebihi 10.000?
minggu_kedua_terpilih <- minggu_kedua > 0
# Hari dalam minggu_kedua yang langkahnya lebih
langkahLebih_minggu_kedua <-
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Apakah setiap harinya langkah Anda melebihi 10.000?
minggu_kedua_terpilih <- minggu_kedua > 0
# Hari dalam minggu_kedua yang langkahnya lebih
langkahLebih_minggu_kedua <- minggu_kedua[minggu_kedua_terpilih]
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua_terpilih") %>% check_equal(incorrect_msg = "Jangan mengubah bagaimana `minggu_kedua_terpilih` dihitung.")
ex() %>% check_object("langkahLebih_minggu_kedua") %>% check_equal(incorrect_msg = "Sepertinya `vektor_langkah_lebih` tidak memuat elemen-elemen yang akurat. Gunakan `minggu_kedua[minggu_kedua_terpilih]`.")
success_msg("Luas biara! Eh, Luar biasa! Mari kita lanjut ke materi berikutnya.")
minggu_kedua[minggu_kedua_terpilih]
untuk memilih elemen-elemen yang diinginkan dari minggu_kedua
. Jadikan hasilnya sebagai variabel Sebelumnya kita telah memilih hari-hari di minggu kedua yang banyak langkah Anda melebihi target (nilainya positif). Di Latihan 1.20, Anda akan diminta untuk melakukan hal yang sama, tetapi untuk minggu pertama.
Latihan 1.20
- Buatlah variabel
minggu_pertama_terpilih
. Variabel ini untuk menentukan apakah nilai-nilai dalamminggu_pertama
positif. - Jadikan hasilnya untuk memilih elemen-elemen minggu_pertama yang positif. Simpan hasilnya sebagai variabel
langkahLebih_minggu_pertama
.
# no pec
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Apakah setiap harinya langkah Anda melebihi 10.000?
minggu_pertama_terpilih <-
# Pilihlah nilai dari hari-hari dalam minggu_pertama yang lebih
langkahLebih_minggu_pertama <-
# Kekurangan/kelebihan langkah di minggu pertama dan kedua
minggu_pertama <- c(1205, 823, -340, -541, -259, 662, 1845)
minggu_kedua <- c(901, 1043, 56, -101, -404, 772, 2410)
vektor_hari <- c("Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu")
names(minggu_pertama) <- vektor_hari
names(minggu_kedua) <- vektor_hari
# Apakah setiap harinya langkah Anda melebihi 10.000?
minggu_pertama_terpilih <- minggu_pertama > 0
# Pilihlah nilai dari hari-hari dalam minggu_pertama yang lebih
langkahLebih_minggu_pertama <- minggu_pertama[minggu_pertama_terpilih]
msg = "Jangan mengubah nilai dan penamaan `minggu_pertama` and `minggu_kedua`."
ex() %>% check_object("vektor_hari", undefined_msg = msg) %>% check_equal(incorrect_msg = msg)
ex() %>% check_object("minggu_pertama", undefined_msg = msg, ) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_kedua", undefined_msg = msg) %>% check_equal(eq_condition = "equal",incorrect_msg = msg)
ex() %>% check_object("minggu_pertama_terpilih") %>% check_equal(incorrect_msg = "Sepertinya `minggu_pertama_terpilih` tidak memuat elemen-elemen yang akurat. Gunakan `minggu_pertama > 0`.")
ex() %>% check_object("langkahLebih_minggu_pertama") %>% check_equal(incorrect_msg = "Sepertinya `vektor_langkah_lebih` tidak memuat elemen-elemen yang tepat. Gunakan `minggu_pertama[minggu_pertama_terpilih]`.")
success_msg("Mantap! Latihan ini merupakan akhir dari subbab ini. Subbab berikutnya akan membahas bentuk dimensi dua dari vektor, yaitu matriks.")
minggu_pertama_terpilih
dengan tepat, Anda dapat menggunakan minggu_pertama[minggu_pertama_terpilih]
untuk memilih nilai-nilai yang positif dari minggu_pertama
.