Menu
CoddyTech

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  TRUE

Kamu 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 50

R 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 40

Pengindeksan 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.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua baris input:

  1. List angka yang dipisahkan dengan koma (misalnya, 15,42,8,67,23,91,34,12,56)
  2. Dua nilai ambang yang dipisahkan dengan koma dan mewakili suatu rentang (misalnya, 20,60)

Dengan menggunakan pengindeksan logis:

  1. Buat vector numerik dari angka-angka yang dipisahkan dengan koma
  2. Ambil dan cetak semua elemen yang kurang dari ambang pertama (batas bawah)
  3. Ambil dan cetak semua elemen yang lebih besar dari ambang kedua (batas atas)
  4. 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,50

Outputnya harus:

[1]  5 10 15
[1] 60 80
[1] 25 45 35 50

Penjelasan:

  • 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 cetak
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler R online