Hướng dẫn thân thiện về tổ chức dữ liệu với danh sách trong R
Xin chào các bạn đang học lập trình R! Hôm nay, chúng ta sẽ khám phá một trong những cấu trúc dữ liệu linh hoạt nhất của R: danh sách. Hãy tưởng tượng danh sách như những cây kéo đa năng trong lập trình R - chúng có thể chứa gần như bất kỳ thứ gì! Hãy cùng nhau khám phá bí ẩn của danh sách nhé.
Tạo một danh sách
Danh sách trong R giống như những bình chứa ma thuật có thể chứa nhiều loại dữ liệu khác nhau. Hãy tưởng tượng bạn đang chuẩn bị hành lý cho kỳ nghỉ - bạn có thể có quần áo, sách và đồ dùng cá nhân tất cả trong một vali. Đó chính xác là điều mà một danh sách làm trong R!
Hãy tạo danh sách đầu tiên của chúng ta:
my_first_list <- list("apple", 42, TRUE, c(1, 2, 3))
print(my_first_list)
Khi bạn chạy đoạn mã này, bạn sẽ thấy:
[[1]]
[1] "apple"
[[2]]
[1] 42
[[3]]
[1] TRUE
[[4]]
[1] 1 2 3
Thật tuyệt phải không? Chúng ta vừa tạo một danh sách chứa một chuỗi, một số, một giá trị logic và thậm chí cả một véc-tơ! Đó như thể bạn có một ngăn kéo nơi bạn có thể để bất kỳ thứ gì bạn muốn.
Đặt tên cho các phần tử trong danh sách
Bây giờ, hãy làm cho danh sách của chúng ta trở nên có tổ chức hơn. Chúng ta có thể đặt tên cho từng phần tử trong danh sách, giống như việc bạn đánh dấu các ngăn trong vali của mình:
labeled_list <- list(fruit = "banana", number = 7, is_fun = TRUE, scores = c(85, 90, 95))
print(labeled_list)
Điều này sẽ ra:
$fruit
[1] "banana"
$number
[1] 7
$is_fun
[1] TRUE
$scores
[1] 85 90 95
Thấy không, mỗi phần tử bây giờ đều có một tên! Điều này giúp danh sách của chúng ta dễ dàng hơn để điều hướng!
Truy cập các phần tử trong danh sách
Truy cập các phần tử trong danh sách giống như việc bạn把手 vào vali để lấy chính xác thứ bạn cần. Có một vài cách để làm điều này:
-
Sử dụng dấu vuông
[]
:print(labeled_list[1]) # Trả về một danh sách chứa phần tử đầu tiên
-
Sử dụng dấu vuông đôi
[[]]
:print(labeled_list[[1]]) # Trả về giá trị thực tế của phần tử đầu tiên
-
Sử dụng toán tử
$
(cho các phần tử có tên):print(labeled_list$fruit) # Trả về giá trị liên kết với "fruit"
Hãy thử chúng ra:
print(labeled_list[1])
print(labeled_list[[1]])
print(labeled_list$fruit)
Bạn sẽ thấy:
$fruit
[1] "banana"
[1] "banana"
[1] "banana"
Chú ý những khác biệt tinh tế? Phương pháp đầu tiên trả về một danh sách, trong khi hai phương pháp còn lại trả về giá trị thực tế.
Chỉnh sửa các phần tử trong danh sách
Danh sách không phải là bất biến - chúng ta có thể thay đổi chúng! Hãy cập nhật một số phần tử trong danh sách của chúng ta:
labeled_list$fruit <- "mango"
labeled_list[[2]] <- 10
labeled_list$scores[2] <- 92
print(labeled_list)
Sau khi chạy đoạn mã này, bạn sẽ thấy:
$fruit
[1] "mango"
$number
[1] 10
$is_fun
[1] TRUE
$scores
[1] 85 92 95
Chúng ta đã thay đổi loại quả, cập nhật số và thậm chí thay đổi một phần tử trong véc-tơ điểm số!
Kết hợp hai danh sách
Đôi khi, bạn có thể muốn kết hợp hai danh sách. Điều này giống như việc bạn合并 hai vali thành một vali lớn hơn:
list1 <- list(a = 1, b = 2)
list2 <- list(c = 3, d = 4)
merged_list <- c(list1, list2)
print(merged_list)
Điều này sẽ cho bạn:
$a
[1] 1
$b
[1] 2
$c
[1] 3
$d
[1] 4
Voilà! Chúng ta đã tạo ra một danh sách mới, lớn hơn từ hai danh sách nhỏ hơn.
Chuyển đổi danh sách thành véc-tơ
Đôi khi, bạn có thể muốn làm phẳng danh sách của mình thành một véc-tơ đơn giản. Điều này giống như việc bạn unpack vali của mình và trải tất cả ra giường:
my_list <- list(1, 2, 3, 4)
my_vector <- unlist(my_list)
print(my_vector)
Điều này sẽ ra:
[1] 1 2 3 4
Danh sách của chúng ta đã được chuyển đổi thành một véc-tơ đơn giản!
Bảng phương thức danh sách phổ biến
Dưới đây là bảng tóm tắt một số phương thức danh sách phổ biến trong R:
Phương thức | Mô tả | Ví dụ |
---|---|---|
list() |
Tạo một danh sách mới | list(1, "a", TRUE) |
length() |
Lấy số lượng phần tử trong danh sách | length(my_list) |
names() |
Lấy hoặc đặt tên cho các phần tử trong danh sách | names(my_list) <- c("a", "b", "c") |
append() |
Thêm phần tử vào danh sách | append(my_list, list(d = 4)) |
unlist() |
Chuyển đổi danh sách thành véc-tơ | unlist(my_list) |
lapply() |
Áp dụng một hàm cho tất cả các phần tử của danh sách | lapply(my_list, sqrt) |
Và thế là xong, các bạn! Chúng ta đã cùng nhau khám phá thế giới của danh sách trong R, từ việc tạo ra đến việc manipulates và hơn thế nữa. Nhớ rằng, thực hành là cách tốt nhất để thành thạo, vì vậy đừng ngại thử nghiệm với các khái niệm này. Danh sách rất mạnh mẽ và linh hoạt, và việc thành thạo chúng sẽ làm cho hành trình lập trình R của bạn trở nên thú vị hơn!
Chúc các bạn lập trình vui vẻ, và hy vọng danh sách của bạn luôn được tổ chức và cấu trúc dữ liệu của bạn luôn vững chắc!
Credits: Image by storyset