Pengantar Pemrograman R

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.")
Simpanlah 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.")
Di dalam editor sudah tersedia 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.")
Anda dapat menggunakan 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!")
Anda dapat menggunakan 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 dan vektor_b dan jadikan hasilnya sebagai vektor_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.")
Gunakan + 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.")
Serupa dengan latihan sebelumnya, berikan hasil penjumlahan kedua vektor kepada 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.")
Gunakan 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 dan total_minggu_kedua dengan menggunakan fungsi sum().
  • 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.")
Untuk memeriksa apakah 10 lebih besar dari 4, Anda bisa menuliskan 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!")
Pilihlah elemen-elemen 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 fungsi mean(). 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!")
Anda dapat menggunakan 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 sebagai minggu_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.")
Untuk mengecek hari apa saja yang nilainya positif, R perlu mengecek setiap elemen 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.")
Gunakan minggu_kedua[minggu_kedua_terpilih] untuk memilih elemen-elemen yang diinginkan dari minggu_kedua. Jadikan hasilnya sebagai variabel vektor_langkah_lebih.

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 dalam minggu_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.")
Setelah Anda dapat menghitung minggu_pertama_terpilih dengan tepat, Anda dapat menggunakan minggu_pertama[minggu_pertama_terpilih] untuk memilih nilai-nilai yang positif dari minggu_pertama.

Uji Pengetahuan Anda

Kerjakan soal-soal dalam kuis Vektor berikut dengan tepat!

Kode berikut digunakan untuk membuat sebuah vektor v. Lengkapilah kode tersebut!

v = (10, 20, 30, 40, 50)

Vektor c(0, 3, 5) + c(7, 2, 5) ekuivalen dengan ...

Elemen-elemen vektor x akan dinamai dengan vektor y. Kode yang digunakan adalah ...

Hasil penjumlahan semua elemen vektor contoh_vektor dapat ditentukan dengan ...

Kode berikut digunakan untuk memilih elemen kedua sampai kelima dari vektor v. Lengkapilah bagian yang kosong!

v[25]

Perhatikan deskripsi berikut. Kode untuk mendapatkan vektor_n adalah ...

Diberikan vektor_m <- c(9, 11, 15, 10). Anda akan menentukan apakah elemen-elemen vektor_m kurang dari atau sama dengan 10. Hasilnya Anda jadikan sebagai vektor_n.