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] 42Tanda 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] 42Perbedaan 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] 20Di 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.
Tantangan
MudahKamu akan menerima dua baris input:
- Tiga nilai dengan tipe berbeda yang dipisahkan koma (misalnya,
100,hello,TRUE) - List angka yang dipisahkan koma dan mewakili vector yang akan disimpan sebagai elemen keempat (misalnya,
5,10,15,20)
Lakukan operasi berikut:
- Buat list dengan empat elemen: nilai numerik, teks, nilai logis, dan vector angka
- Gunakan tanda kurung siku ganda untuk mengekstrak dan mencetak elemen kedua (nilai teks)
- Gunakan tanda kurung siku tunggal untuk mengekstrak elemen ketiga dan mencetak hasilnya (perhatikan perbedaan format output)
- Akses vector yang disimpan dalam elemen keempat menggunakan tanda kurung siku ganda, lalu ekstrak dan cetak nilai ketiganya menggunakan pengindeksan vector
- 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,40Outputnya seharusnya:
[1] "world"
[[1]]
[1] FALSE
[1] 24
[1] 120Penjelasan:
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: 24sum(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 keempatPelajaran 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 FizzBuzz2Variabel 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