Menu
CoddyTech

Danh sách có tên

Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 74 trên 78.

Giống như vector có tên, danh sách cũng có thể gán tên cho các phần tử. Điều này giúp code dễ đọc hơn và cho phép bạn truy cập các phần tử bằng nhãn có ý nghĩa thay vì vị trí số.

Bạn có thể gán tên khi tạo danh sách:

person <- list(name = "Alice", age = 25, active = TRUE)
print(person)

Đầu ra:

$name
[1] "Alice"

$age
[1] 25

$active
[1] TRUE

Hãy chú ý rằng đầu ra hiện hiển thị $name thay vì [[1]]. Để truy cập các phần tử có tên, hãy dùng toán tử $:

person <- list(name = "Alice", age = 25, active = TRUE)
print(person$age)

Đầu ra:

[1] 25

Bạn cũng có thể dùng dấu ngoặc vuông kép cùng với tên dưới dạng chuỗi. Cách này hữu ích khi tên được lưu trong một biến:

person <- list(name = "Alice", age = 25)
print(person[["name"]])

Đầu ra:

[1] "Alice"

Việc sửa đổi các phần tử được đặt tên cũng tương tự. Dùng $ để thay đổi giá trị hiện có hoặc thêm giá trị mới:

person <- list(name = "Alice", age = 25)
person$age <- 26
person$city <- "Paris"
print(person)

Đầu ra:

$name
[1] "Alice"

$age
[1] 26

$city
[1] "Paris"
challenge icon

Thử thách

Dễ

Bạn sẽ nhận được ba dòng đầu vào:

  1. Tên sách (ví dụ: The Great Gatsby)
  2. Tác giả của sách (ví dụ: F. Scott Fitzgerald)
  3. Năm xuất bản (ví dụ: 1925)

Thực hiện các thao tác sau:

  1. Tạo một danh sách có tên book với ba phần tử: title, author và year (chuyển year sang kiểu số)
  2. In ra tên sách bằng toán tử $
  3. In ra năm xuất bản bằng cách dùng dấu ngoặc vuông kép với tên dưới dạng chuỗi
  4. Cập nhật year thành năm sau đó 1 năm bằng toán tử $
  5. Thêm một phần tử mới tên là available với giá trị TRUE
  6. In ra toàn bộ danh sách đã cập nhật

Ví dụ, nếu đầu vào là:

1984
George Orwell
1949

Đầu ra sẽ là:

[1] "1984"
[1] 1949
$title
[1] "1984"

$author
[1] "George Orwell"

$year
[1] 1950

$available
[1] TRUE

Giải thích:

  • book$title in ra giá trị tên sách
  • book[["year"]] in ra năm ban đầu
  • Năm được cập nhật từ 1949 thành 1950
  • Một phần tử available mới được thêm vào với giá trị TRUE

Tự làm thử

# Đọc đầu vào
con <- file("stdin", "r")
title <- suppressWarnings(readLines(con, n = 1))
author <- suppressWarnings(readLines(con, n = 1))
year <- suppressWarnings(readLines(con, n = 1))
close(con)

# TODO: Viết code của bạn bên dưới
# 1. Tạo một danh sách có tên 'book' gồm các phần tử: title, author và year (chuyển year thành số)
# 2. In ra title của book bằng toán tử $
# 3. In ra year của book bằng dấu ngoặc vuông kép, với tên phần tử ở dạng chuỗi
# 4. Cập nhật year tăng thêm 1 bằng toán tử $
# 5. Thêm phần tử mới tên 'available' với giá trị TRUE
# 6. In ra toàn bộ danh sách sau khi cập nhật
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch R online