Menu
CoddyTech

Mengakses Elemen list

Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 72 dari 78.

list menggunakan sintaks yang berbeda untuk mengakses elemen dibandingkan vector. Perbedaan utamanya adalah antara tanda kurung siku tunggal [ ] dan tanda kurung siku ganda [[ ]].

Kurung siku ganda mengambil elemen sebenarnya dari list:

my_list <- list(42, "hello", TRUE)
print(my_list[[1]])

Output:

[1] 42

Tanda kurung siku tunggal menghasilkan sublist yang berisi elemen tersebut, bukan elemen itu sendiri:

my_list <- list(42, "hello", TRUE)
print(my_list[1])

Output:

[[1]]
[1] 42

Perbedaan ini penting saat kamu ingin bekerja dengan nilai sebenarnya. Jika elemen list berupa vector, tanda kurung siku ganda memungkinkanmu mengaksesnya secara langsung, lalu menggunakan pengindeksan vector:

my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])

Output:

[1] 20

Di sini, my_list[[1]] mengambil vector, dan [2] mengakses elemen keduanya. Ingat: gunakan [[ ]] saat kamu membutuhkan isi sebenarnya, dan [ ] saat kamu menginginkan list yang lebih kecil.

challenge icon

Tantangan

Mudah

Kamu akan menerima dua baris input:

  1. Tiga nilai dengan tipe berbeda yang dipisahkan koma (misalnya, 100,hello,TRUE)
  2. List angka yang dipisahkan koma dan mewakili vector yang akan disimpan sebagai elemen keempat (misalnya, 5,10,15,20)

Lakukan operasi berikut:

  1. Buat list dengan empat elemen: nilai numerik, teks, nilai logis, dan vector angka
  2. Gunakan tanda kurung siku ganda untuk mengekstrak dan mencetak elemen kedua (nilai teks)
  3. Gunakan tanda kurung siku tunggal untuk mengekstrak elemen ketiga dan mencetak hasilnya (perhatikan perbedaan format output)
  4. Akses vector yang disimpan dalam elemen keempat menggunakan tanda kurung siku ganda, lalu ekstrak dan cetak nilai ketiganya menggunakan pengindeksan vector
  5. Cetak jumlah semua angka dalam elemen keempat (akses vector dengan tanda kurung siku ganda dan gunakan sum())

Misalnya, jika inputnya adalah:

42,world,FALSE
8,16,24,32,40

Outputnya seharusnya:

[1] "world"
[[1]]
[1] FALSE

[1] 24
[1] 120

Penjelasan:

  • my_list[[2]] mengekstrak nilai teks sebenarnya: "world"
  • my_list[3] mengembalikan sublist yang berisi FALSE (perhatikan [[1]] pada output)
  • my_list[[4]][3] mengakses vector, lalu mengambil elemen ketiganya: 24
  • sum(my_list[[4]]) menghitung 8+16+24+32+40 = 120

Coba sendiri

# Baca input
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1))  # Baris pertama: tiga nilai yang dipisahkan koma
input2 <- suppressWarnings(readLines(con, n = 1))  # Baris kedua: angka yang dipisahkan koma untuk vektor
close(con)

# Pisahkan baris input pertama menjadi nilai-nilai terpisah
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])

# Ubah baris input kedua menjadi vektor numerik
vector_val <- as.numeric(strsplit(input2, ",")[[1]])

# TODO: Tulis kodemu di bawah ini
# 1. Buat list dengan empat elemen: numeric_val, text_val, logical_val, dan vector_val
# 2. Gunakan kurung siku ganda [[ ]] untuk mengambil dan mencetak elemen kedua
# 3. Gunakan kurung siku tunggal [ ] untuk mengambil elemen ketiga dan mencetaknya
# 4. Akses elemen keempat dengan kurung siku ganda, lalu ambil nilai ketiganya
# 5. Cetak jumlah semua angka dalam elemen keempat
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