Pemotongan dan Pengindeksan Vektor
Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 67 dari 78.
Kamu sudah belajar cara mengakses elemen tunggal dan melakukan iterasi pada vector. Sekarang, mari kita pelajari cara mengambil beberapa elemen sekaligus menggunakan slicing. Teknik ini memungkinkan kamu mengambil subset dari vector dalam satu operasi.
Untuk mengekstrak beberapa elemen, masukkan vektor indeks di dalam tanda kurung siku:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[c(1, 3, 5)])Output:
[1] 10 30 50Kamu juga bisa menggunakan operator titik dua untuk memilih rentang elemen yang berurutan:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[2:4])Output:
[1] 20 30 40Indeks negatif sangat berguna di R. Indeks ini mengecualikan elemen, bukan memilihnya:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-2])Output:
[1] 10 30 40 50Kamu dapat mengecualikan beberapa elemen dengan meneruskan vector berisi indeks negatif:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[-c(1, 5)])Output:
[1] 20 30 40Ingat: kamu tidak bisa mencampur indeks positif dan negatif dalam pemilihan yang sama. R akan menghasilkan error jika kamu mencoba numbers[c(1, -2)].
Tantangan
MudahKamu akan menerima dua baris input:
- List angka yang dipisahkan dengan koma (misalnya,
100,200,300,400,500,600,700) - Dua indeks yang dipisahkan dengan koma, yang menunjukkan rentang untuk dikecualikan (misalnya,
2,5)
Kode awal sudah membaca input dan membuat vector numerik. Cetak tepat empat baris, dengan urutan berikut:
- Cetak elemen pada posisi 1, 3, dan 5 menggunakan vector indeks
- Cetak elemen dari posisi 2 hingga posisi 4 menggunakan operator titik dua
- Cetak vector dengan mengecualikan elemen pada indeks pertama yang diberikan (menggunakan pengindeksan negatif)
- Cetak vector dengan mengecualikan elemen dari indeks pertama hingga indeks kedua (menggunakan pengindeksan negatif dengan rentang)
Misalnya, jika inputnya adalah:
10,20,30,40,50,60,70
3,5Outputnya harus:
[1] 10 30 50
[1] 20 30 40
[1] 10 20 40 50 60 70
[1] 10 20 60 70Penjelasan:
- Elemen pada posisi 1, 3, 5 adalah: 10, 30, 50
- Elemen dari posisi 2 hingga 4 adalah: 20, 30, 40
- Mengecualikan posisi 3 menghasilkan: 10, 20, 40, 50, 60, 70
- Mengecualikan posisi 3 hingga 5 menghasilkan: 10, 20, 60, 70
Coba sendiri
# Baca input
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
indices_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Ubah angka yang dipisahkan koma menjadi vektor numerik
numbers <- as.numeric(strsplit(numbers_input, ",")[[1]])
# Ubah kedua indeks menjadi angka
indices <- as.numeric(strsplit(indices_input, ",")[[1]])
idx1 <- indices[1]
idx2 <- indices[2]
# TODO: Tulis kodemu di bawah ini
# 1. Cetak elemen pada posisi 1, 3, dan 5 menggunakan vektor indeks
# 2. Cetak elemen dari posisi 2 hingga posisi 4 menggunakan operator titik dua
# 3. Cetak vektor tanpa elemen pada idx1 (pengindeksan negatif)
# 4. Cetak vektor tanpa elemen dari idx1 hingga idx2 (pengindeksan negatif dengan rentang)Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
4Operator Bagian 2
Operator Logika (AND, OR)Operator Logika Bagian 2 (NOT)Rangkuman: Logika SederhanaLogika Tervektorisasi Bagian 1Logika Tervektorisasi Bagian 27Kalkulator Pembagi Tagihan
Pesan Selamat DatangMenerima Input Pengguna10FizzBuzz dengan Sentuhan Unik
Ikhtisar PermainanFungsi FizzBuzz13Vektor Lanjutan
Pemotongan dan Pengindeksan VektorPengindeksan LogisAritmetika Vektor dan Daur UlangOperator %in%2Variabel dan Tipe Data
Tipe Data NumerikTipe Data IntegerTipe Data KarakterTipe Data LogikaMemeriksa Tipe DataKonvensi PenamaanNilai yang Hilang: NARingkasan: Membuat Variabel8Perulangan
For LoopWhile LoopBreakBerikutnya (Continue)Ringkasan: FaktorialPembuatan Urutan (seq, :)Loop BersarangRingkasan: Input Dinamis3Operator Bagian 1
Operator AritmetikaPembagian Bilangan Bulat dan ModuloOperator PenugasanRangkuman: Matematika SederhanaOperator Perbandingan6Dasar input/output
Cetak outputcat untuk outputOutput dengan variabelMembaca input dengan readline()Dasar konversi tipe dataRingkasan: Kalkulator usiaRingkasan: Benar atau salah9Fungsi
Mendeklarasikan FungsiArgumen FungsiNilai KembalianUlasan: Fungsi SigmaUlasan: Fungsi ValidasiNilai Parameter Default12Melakukan Iterasi pada Urutan
Mengiterasi Elemen VektorMenggunakan seq_along()Mengiterasi Karakter (strsplitFungsi Manipulasi stringLatihan sendiri: Compiler R online