Mengubah list
Termasuk bagian Dasar-Dasar dalam perjalanan R di Coddy. Pelajaran 73 dari 78.
Sekarang setelah kamu tahu cara membuat list dan mengakses elemennya, mari pelajari cara mengubahnya. Kamu bisa mengubah elemen yang sudah ada, menambahkan elemen baru, atau menghapus elemen sepenuhnya.
Untuk mengubah elemen yang sudah ada, gunakan tanda kurung siku ganda dengan penugasan:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)Output:
[[1]]
[1] 10
[[2]]
[1] "world"
[[3]]
[1] TRUEUntuk menambahkan elemen baru, cukup tetapkan nilai pada indeks yang belum ada:
my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)Output:
[[1]]
[1] 10
[[2]]
[1] "hello"
[[3]]
[1] FALSEUntuk menghapus sebuah elemen, tetapkan NULL padanya:
my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)Output:
[[1]]
[1] 10
[[2]]
[1] TRUEPerhatikan bahwa setelah menghapus elemen kedua, elemen yang tersisa bergeser untuk mengisi celah. Elemen yang berada di posisi 3 sekarang berada di posisi 2.
Tantangan
MudahKamu akan menerima tiga baris input:
- Tiga nilai yang dipisahkan koma untuk menginisialisasi list (misalnya,
50,hello,TRUE) - Indeks dan nilai baru yang dipisahkan koma untuk melakukan modifikasi (misalnya,
2,goodbye) - Indeks elemen yang akan dihapus (misalnya,
3)
Lakukan operasi berikut:
- Buat list dengan tiga nilai awal (ubah ke tipe yang sesuai: numerik, karakter, logikal)
- Cetak list asli
- Ubah elemen pada indeks yang ditentukan dengan nilai baru (pertahankan sebagai string karakter)
- Cetak list setelah dimodifikasi
- Tambahkan elemen keempat baru ke list dengan nilai
999 - Cetak list setelah menambahkan elemen baru
- Hapus elemen pada indeks yang ditentukan (dari input ketiga)
- Cetak list akhir
Misalnya, jika inputnya adalah:
100,world,FALSE
1,updated
2Outputnya seharusnya:
[[1]]
[1] 100
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[1]]
[1] "updated"
[[2]]
[1] "world"
[[3]]
[1] FALSE
[[4]]
[1] 999
[[1]]
[1] "updated"
[[2]]
[1] FALSE
[[3]]
[1] 999Penjelasan:
- List asli: 100, "world", FALSE
- Setelah mengubah indeks 1: "updated", "world", FALSE
- Setelah menambahkan elemen keempat: "updated", "world", FALSE, 999
- Setelah menghapus indeks 2: "updated", FALSE, 999 (elemen yang tersisa bergeser)
Ingat untuk menggunakan tanda kurung siku ganda [[ ]] untuk melakukan modifikasi dan menetapkan NULL untuk menghapus elemen.
Coba sendiri
# Baca input
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1)) # Tiga nilai yang dipisahkan koma
modify_input <- suppressWarnings(readLines(con, n = 1)) # Indeks dan nilai baru
remove_index <- suppressWarnings(readLines(con, n = 1)) # Indeks yang akan dihapus
close(con)
# Uraikan nilai awal
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])
# Uraikan input perubahan
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]
# Uraikan indeks yang akan dihapus
rem_index <- as.numeric(remove_index)
# TODO: Tulis kodemu di bawah ini
# 1. Buat list berisi tiga nilai awal (val1, val2, val3)
# 2. Cetak list awal
# 3. Ubah elemen pada indeks mod_index menjadi mod_value
# 4. Cetak list setelah diubah
# 5. Tambahkan elemen keempat yang baru dengan nilai 999
# 6. Cetak list setelah penambahan
# 7. Hapus elemen pada rem_index (gunakan NULL)
# 8. Cetak list akhirPelajaran 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