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] TRUEHã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] 25Bạ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"Thử thách
DễBạn sẽ nhận được ba dòng đầu vào:
- Tên sách (ví dụ:
The Great Gatsby) - Tác giả của sách (ví dụ:
F. Scott Fitzgerald) - Năm xuất bản (ví dụ:
1925)
Thực hiện các thao tác sau:
- Tạo một danh sách có tên
bookvới ba phần tử:title,authorvàyear(chuyển year sang kiểu số) - In ra tên sách bằng toán tử
$ - 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
- Cập nhật
yearthành năm sau đó 1 năm bằng toán tử$ - Thêm một phần tử mới tên là
availablevới giá trịTRUE - 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] TRUEGiải thích:
book$titlein ra giá trị tên sáchbook[["year"]]in ra năm ban đầu- Năm được cập nhật từ 1949 thành 1950
- Một phần tử
availablemớ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ậtBà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
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động11Vectơ
Tạo vectơ bằng c()Truy cập phần tử trong vectơChỉnh sửa vectơCác phép toán trên vectơÔn tập: vectơ giáÔn tập: vectơ đảo ngượcVectơ có tên14Danh sách trong R
Tạo danh sáchTruy cập phần tử trong danh sáchChỉnh sửa danh sáchDanh sách có tênÔn tập: Danh sách sản phẩm3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online