Daftar dalam Pemrograman R: Cara Membuat & Memilih Elemen
โก Ringkasan Cerdas
R List adalah objek yang menyimpan vektor, matriks, data frame, dan bahkan daftar lainnya dalam satu wadah. Fungsi list() membangunnya, dan tanda kurung siku ganda mengambil kembali elemen apa pun.

Apa itu Daftar R?
Daftar R adalah objek dalam pemrograman R yang mencakup matriks, vektor, bingkai data, atau daftar di dalamnya. R List juga digunakan untuk menyimpan kumpulan objek dan menggunakannya saat kita membutuhkannya. Kita bisa membayangkan daftar R sebagai tas untuk menaruh banyak barang berbeda. Ketika kita perlu menggunakan suatu barang, kita bisa membuka tasnya dan menggunakannya.
Perbedaan dengan vektor inilah yang membuat daftar (list) berguna. Vektor memaksa setiap elemen menjadi satu tipe, sehingga menempatkan kata di samping angka mengubah angka tersebut menjadi teks. Daftar tidak menerapkan aturan seperti itu, itulah sebabnya daftar dapat memuat vektor lima elemen, atau daftar dua baris. matriks dan sebuah data frame berisi 714 baris berdampingan tanpa mengubah satu pun di antaranya.
Sintaks Daftar di R
Kita dapat menggunakan fungsi list() untuk membuat daftar dalam pemrograman R:
list(element_1, ...) arguments: -element_1: store any type of R object -...: pass as many objects as specifying. each object needs to be separated by a comma
Setiap argumen dapat diberikan secara langsung atau dalam bentuk tertentu. tag = nilaiArgumen kosong menjadi elemen posisional yang hanya dapat dijangkau berdasarkan nomornya, sedangkan argumen berlabel juga mendapatkan nama. Referensi dasar R untuk daftar() Dokumen ini menjelaskan kedua bentuk tersebut dan mencatat bahwa unlist() bertindak sebagai kebalikan perkiraan dari as.list().
Cara Membuat Daftar di R
Di bawah ini adalah proses langkah demi langkah tentang cara membuat daftar di R:
Pada contoh di bawah ini, kita akan membuat tiga objek berbeda, sebuah Vektor, sebuah Matriks dan a Bingkai Data menggunakan fungsi daftar di R.
Langkah 1) Buat Vektor
Gunakan kode di bawah ini untuk membuat vektor di R
# Vector with numeric from 1 up to 5
vect <- 1:5
Operator titik dua (:) membangun urutan 1, 2, 3, 4, 5 sebagai vektor bilangan bulat, dan tanda panah penugasan (:) menyimpannya dengan nama vect.
Langkah 2) Buat Matriks
Sekarang, buat matriks menggunakan kode berikut.
# A 2x 5 matrix
mat <- matrix(1:9, ncol = 5)
dim(mat)
Ada dua detail yang perlu diperhatikan di sini. Sebuah grid dengan dua baris dan lima kolom membutuhkan sepuluh nilai, namun hanya sembilan yang diberikan, sehingga R mendaur ulang urutan tersebut dan mencetak peringatan bahwa panjang data bukan kelipatan dari jumlah baris. Nilai yang didaur ulang itulah yang menyebabkan baris kedua matriks yang dicetak berakhiran 1, bukan 10. Panggilan ke dim() kemudian melaporkan bentuknya.
Keluaran:
## [1] 2 5
Langkah 3) Buat Bingkai Data
Buat bingkai data di R menggunakan kode di bawah ini
# select the 10th row of the built-in R data set EuStockMarkets
df <- EuStockMarkets[1:10,]
Komentar tersebut menyebutkan baris kesepuluh, tetapi ekspresi tersebut mempertahankan baris 1 hingga 10 dari seri EuStockMarkets bawaan. Subsetting juga menghilangkan kelas time-series, sehingga yang dikembalikan adalah matriks numerik dan bukan data frame yang sebenarnya, itulah sebabnya hasil cetak di bawah ini memiliki label baris bergaya [1,] dan bukan nama baris. Bungkus panggilan tersebut dengan as.data.frame() setiap kali data frame yang sebenarnya dibutuhkan.
Langkah 4) Buat Daftar di R
Sekarang, kita dapat memasukkan ketiga objek tersebut ke dalam daftar R menggunakan kode di bawah ini
# Construct list with these vec, mat, and df:
my_list <- list(vect, mat, df)
my_list
Keluaran:
## [[1]] ## [1] 1 2 3 4 5 ## [[2]] ## [,1] [,2] [,3] [,4] [,5] ## [1,] 1 3 5 7 9 ## [2,] 2 4 6 8 1 ## [[3]] ## DAX SMI CAC FTSE ## [1,] 1628.75 1678.1 1772.8 2443.6 ## [2,] 1613.63 1688.5 1750.5 2460.2 ## [3,] 1606.51 1678.6 1718.0 2448.2 ## [4,] 1621.04 1684.1 1708.1 2470.4 ## [5,] 1618.16 1686.6 1723.1 2484.7 ## [6,] 1610.61 1671.6 1714.3 2466.8 ## [7,] 1630.75 1682.9 1734.5 2487.9 ## [8,] 1640.17 1703.6 1757.4 2508.4 ## [9,] 1635.47 1697.5 1754.0 2510.5 ## [10,] 1645.89 1716.3 1754.3 2497.4
Tiga header tanda kurung ganda dalam output tersebut adalah posisi daftar. Tidak ada yang diratakan atau diubah: elemen pertama masih berupa vektor bilangan bulat, elemen kedua masih berupa matriks, dan elemen ketiga masih berisi kesepuluh baris harga saham.
Pilih Elemen dari Daftar R
Setelah kita membuat daftar, kita dapat mengaksesnya dengan cukup mudah. โโKita perlu menggunakan [[indeks]] untuk memilih elemen dalam daftar. Nilai di dalam tanda kurung siku ganda mewakili posisi item dalam daftar yang ingin kita akses.tracMisalnya, jika kita memasukkan angka 2 di dalam tanda kurung, R akan mengembalikan elemen kedua yang tercantum.
Sekarang dalam hal ini R tutorial, mari kita coba pilih item kedua dari daftar di R bernama my_list, kita menggunakan my_list[[2]]
# Print second element of the list
my_list[[2]]
Keluaran:
## [,1] [,2] [,3] [,4] [,5] ## [1,] 1 3 5 7 9 ## [2,] 2 4 6 8 1
Tanda kurung tunggal dan ganda tidak dapat saling menggantikan, dan membingungkan keduanya adalah sumber kesalahan daftar yang paling umum. Satu tanda kurung mempertahankan pembungkusnya, dua tanda kurung menghapusnya.
| Ekspresi | Apa yang kembali | Kelas hasil | Gunakan saat |
|---|---|---|---|
| daftar saya[[2]] | Elemen yang tersimpan itu sendiri | Apa pun yang tersimpan, di sini berupa matriks. | Anda perlu melakukan perhitungan pada satu elemen. |
| daftar saya[2] | Subdaftar yang memuat satu elemen tersebut | daftar | Anda perlu menyimpan pembungkus daftar tersebut. |
| my_list[c(1, 3)] | Subdaftar elemen yang dipilih | daftar | Anda membutuhkan beberapa elemen sekaligus. |
| daftar saya[-2] | Setiap elemen kecuali yang kedua | daftar | Anda perlu menghapus sebuah elemen. |
# Compare the two bracket styles class(my_list[[2]]) # the matrix itself class(my_list[2]) # a list of length one # Several elements, and everything but one element my_list[c(1, 3)] my_list[-2]
Daftar Bernama di R
Indeks posisi bersifat rapuh: masukkan satu elemen dan setiap angka setelahnya akan bergeser. Penamaan elemen menghilangkan risiko tersebut dan membuat kode terbaca seperti data yang dijelaskannya. Nama dapat diberikan saat daftar dibuat, atau ditambahkan setelahnya dengan names().
# Tag each element at creation time named_list <- list(numbers = vect, grid = mat, prices = df) # Three ways to reach the same element named_list$grid named_list[["grid"]] named_list["grid"] # returns a one-element list # Read or replace the names later names(named_list) names(named_list)[2] <- "grid_2x5"
Operator $ dan tanda kurung ganda berbeda dalam satu hal yang sering membingungkan pemula. Operator $ melakukan pencocokan sebagian, sehingga named_list$pri masih menemukan harga, sedangkan named_list[[โpriโ]] mengembalikan NULL karena tanda kurung ganda cocok persis kecuali jika exact = FALSE diberikan. Pencocokan sebagian nyaman di konsol dan tidak aman dalam skrip, jadi lebih baik gunakan bentuk yang tepat dalam kode yang disimpan.
# A compact map of the whole structure
str(named_list)
Fungsi str() mencetak satu baris per elemen beserta tipe dan ukurannya, yang merupakan cara tercepat untuk memastikan bahwa sebuah daftar berisi apa yang Anda harapkan sebelum mengakses indeksnya.
Memodifikasi, Menambah, dan Menghapus Elemen dalam Daftar R
Sebuah daftar tidak tetap setelah dibuat. Aksesor yang sama yang membaca elemen juga menulis ke elemen tersebut, sehingga memperbarui, memperluas, dan memperkecil daftar semuanya menggunakan penugasan biasa.
# Replace an element in place named_list[["numbers"]] <- 1:10 # Add a new element simply by naming it named_list[["created"]] <- Sys.Date() # Append without a name: the element lands at the end named_list <- append(named_list, list(TRUE)) # Delete an element by assigning NULL to it named_list[["created"]] <- NULL
- Menggantikan: Memberikan nilai pada nama yang sudah ada akan menimpa elemen tersebut dan membiarkan posisinya tidak berubah.
- Tambahkan: Memberikan nilai pada nama yang tidak ada akan menambahkan elemen baru di akhir daftar.
- Menambahkan: Fungsi append() menerima daftar sebagai argumen kedua, jadi bungkus nilai mentah dengan list() sebelum meneruskannya.
- Menghapus: Memberikan nilai NULL dengan tanda kurung ganda akan menghapus elemen dan memperpendek daftar.
Salah satu konsekuensi yang sering membuat orang bingung adalah: karena NULL berarti penghapusan, Anda tidak dapat menyimpan NULL yang sebenarnya dengan tanda kurung ganda. Gunakan penugasan tanda kurung tunggal sebagai gantinya, seperti pada named_list[โemptyโ] <- list(NULL), yang mempertahankan slot dan menempatkan NULL di dalamnya.
Daftar Bersarang dan unlist() di R
Karena sebuah list dapat memuat objek R apa pun, maka list tersebut juga dapat memuat list lain. Nesting adalah cara objek konfigurasi, respons JSON, dan hasil model biasanya direpresentasikan di R, sehingga mengakses list bersarang dan meratakan list tersebut adalah tugas sehari-hari.
# A list whose elements are themselves lists project <- list( meta = list(owner = "analyst", year = 2026), data = list(vect, mat) ) # Chain the accessors to reach an inner value project$meta$year project[["data"]][[2]] # Flatten every level into one atomic vector flat <- unlist(project) # Strip a single level and keep the rest as a list half <- unlist(project, recursive = FALSE)
Perataan memiliki biaya yang perlu dipahami. `unlist()` harus mengembalikan satu vektor atomik, sehingga ia mengubah setiap nilai ke tipe paling umum yang ada, mengikuti urutan logis, integer, double, karakter. Oleh karena itu, daftar bersarang yang mencampur angka dengan teks akan dikembalikan seluruhnya sebagai teks. Nama hasil dibangun dengan menggabungkan tag luar dan dalam, itulah sebabnya sebuah elemen muncul sebagai `meta.owner` dan bukan `owner`.
Lewatkan `use.names = FALSE` ketika nama gabungan tersebut tidak diinginkan, dan atur `recursive = FALSE` ketika hanya lapisan terluar yang harus dihapus. Jika nilai-nilai tersebut harus mempertahankan tipenya, biarkan struktur tetap utuh dan kerjakan seluruh daftar alih-alih meratakannya.
Bingkai Data Bawaan di R
Daftar sering kali diisi dengan data yang dibaca dari disk atau dari web, jadi akan sangat membantu untuk melihat bagaimana sebuah data frame terbentuk sebelum disimpan di dalamnya. Sebelum membuat data frame kita sendiri, kita dapat melihat dataset R yang tersedia secara online. Dataset penjara memiliki dimensi 714ร5. Kita dapat melihat sekilas bagian bawah data frame dengan fungsi tail(). Secara analogi, head() menampilkan bagian atas data frame. Anda dapat menentukan jumlah baris yang ditampilkan dengan head(df, 5). Kita akan mempelajari lebih lanjut tentang fungsi read.csv() di bagian selanjutnya. mengimpor data di R tutorial.
PATH <-'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/prison.csv'
df <- read.csv(PATH)[1:5]
head(df, 5)
Keluaran:
## X state year govelec black ## 1 1 1 80 0 0.2560 ## 2 2 1 81 0 0.2557 ## 3 3 1 82 1 0.2554 ## 4 4 1 83 0 0.2551 ## 5 5 1 84 0 0.2548
[1:5] yang mengikuti read.csv() memilih lima kolom pertama, bukan lima baris pertama, karena data frame itu sendiri adalah daftar kolom. Pengindeksan tanda kurung tunggal pada daftar mengembalikan daftar yang lebih kecil, dan di sini daftar yang lebih kecil itu masih berupa data frame.
Kita dapat memeriksa struktur bingkai data dengan str:
# Structure of the data
str(df)
Keluaran:
## 'data.frame': 714 obs. of 5 variables: ## $ X : int 1 2 3 4 5 6 7 8 9 10 ... ## $ state : int 1 1 1 1 1 1 1 1 1 1 ... ## $ year : int 80 81 82 83 84 85 86 87 88 89 ... ## $ govelec: int 0 0 1 0 0 0 1 0 0 0 ... ## $ black : num 0.256 0.256 0.255 0.255 0.255 ...
Semua variabel disimpan di numerik format. Awalan $ pada setiap baris adalah operator yang sama yang digunakan pada daftar bernama sebelumnya, yang menegaskan bahwa data frame adalah daftar kolom dengan panjang yang sama yang memiliki label persegi panjang. Oleh karena itu, semua yang dipelajari tentang penamaan, pemilihan, dan penghapusan elemen daftar dapat langsung diterapkan ke Tipe data R dan ke kolom data frame.
