Pengindeksan Logis
Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 68 dari 78.
Alih-alih menentukan posisi yang tepat, kamu dapat menggunakan vektor logis untuk memilih elemen. Teknik ini, yang disebut pengindeksan logis, memungkinkanmu memfilter vektor berdasarkan kondisi, bukan posisi.
Saat kamu menerapkan perbandingan pada vektor, R mengembalikan vektor logika dengan panjang yang sama:
numbers <- c(10, 20, 30, 40, 50)
print(numbers > 25)Output:
[1] FALSE FALSE TRUE TRUE TRUEKamu bisa menggunakan vektor logis ini langsung di dalam tanda kurung siku untuk mengambil elemen yang cocok:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers > 25])Output:
[1] 30 40 50R hanya menyimpan elemen yang vektor logisnya adalah TRUE. Pendekatan ini jauh lebih rapi daripada menulis perulangan untuk memfilter data. Kamu bisa menggabungkan kondisi menggunakan operator logika:
numbers <- c(10, 20, 30, 40, 50)
print(numbers[numbers >= 20 & numbers <= 40])Keluaran:
[1] 20 30 40Pengindeksan logis adalah salah satu fitur R yang paling canggih untuk memanipulasi data. Fitur ini memungkinkan kamu memfilter kumpulan data dengan ekspresi yang sederhana dan mudah dibaca.
Tantangan
MudahKamu akan menerima dua baris input:
- List angka yang dipisahkan dengan koma (misalnya,
15,42,8,67,23,91,34,12,56) - Dua nilai ambang yang dipisahkan dengan koma dan mewakili suatu rentang (misalnya,
20,60)
Dengan menggunakan pengindeksan logis:
- Buat vector numerik dari angka-angka yang dipisahkan dengan koma
- Ambil dan cetak semua elemen yang kurang dari ambang pertama (batas bawah)
- Ambil dan cetak semua elemen yang lebih besar dari ambang kedua (batas atas)
- Ambil dan cetak semua elemen yang berada dalam rentang (lebih besar dari atau sama dengan ambang pertama DAN kurang dari atau sama dengan ambang kedua)
Misalnya, jika inputnya adalah:
5,25,10,45,60,15,80,35,50
20,50Outputnya harus:
[1] 5 10 15
[1] 60 80
[1] 25 45 35 50Penjelasan:
- Elemen yang kurang dari 20: 5, 10, 15
- Elemen yang lebih besar dari 50: 60, 80
- Elemen antara 20 dan 50 (inklusif): 25, 45, 35, 50
Gunakan operator & untuk menggabungkan kondisi pada filter rentang.
Coba sendiri
# Baca input
con <- file("stdin", "r")
numbers_input <- suppressWarnings(readLines(con, n = 1))
thresholds_input <- suppressWarnings(readLines(con, n = 1))
close(con)
# Ubah angka yang dipisahkan koma menjadi vektor numerik
numbers <- as.numeric(unlist(strsplit(numbers_input, ",")))
# Ubah nilai ambang menjadi angka
thresholds <- as.numeric(unlist(strsplit(thresholds_input, ",")))
lower_bound <- thresholds[1]
upper_bound <- thresholds[2]
# TODO: Tulis kodemu di bawah ini
# 1. Gunakan pengindeksan logis untuk mengambil elemen yang lebih kecil dari lower_bound, lalu cetak
# 2. Gunakan pengindeksan logis untuk mengambil elemen yang lebih besar dari upper_bound, lalu cetak
# 3. Gunakan pengindeksan logis dengan operator & untuk mengambil elemen dalam rentang, termasuk batasnya, lalu cetakPelajaran 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