Menu
CoddyTech

Vectơ 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 62 trên 78.

Đến giờ, bạn đã truy cập các phần tử trong vector bằng vị trí số. Nhưng nếu bạn có thể truy cập chúng bằng những tên có ý nghĩa thì sao? Vector có tên cho phép bạn gán nhãn cho từng phần tử, giúp code của bạn dễ đọc và tự giải thích hơn.

Bạn có thể tạo một vector có tên bằng cách cung cấp tên khi tạo:

ages <- c(alice = 25, bob = 30, charlie = 28)
print(ages)

Đầu ra:

  alice     bob charlie 
     25      30      28

Để truy cập các phần tử theo tên, hãy dùng tên làm chuỗi bên trong dấu ngoặc vuông:

print(ages["bob"])

Đầu ra:

bob 
 30

Bạn cũng có thể thêm tên vào một vector hiện có bằng hàm names():

scores <- c(85, 92, 78)
names(scores) <- c("math", "science", "english")
print(scores["math"])

Đầu ra:

math 
  85

Vector có tên đặc biệt hữu ích khi làm việc với dữ liệu có nhãn tự nhiên, chẳng hạn như lưu điểm của học sinh theo môn học hoặc giá theo tên sản phẩm.

challenge icon

Thử thách

Dễ

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

  1. Một danh sách tên sản phẩm được phân tách bằng dấu phẩy (ví dụ: laptop,phone,tablet,headphones)
  2. Một danh sách giá tương ứng được phân tách bằng dấu phẩy (ví dụ: 999,699,449,199)

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

  1. Tạo một vector số từ các giá
  2. Gán tên sản phẩm cho vector bằng hàm names()
  3. In ra toàn bộ vector có tên
  4. In ra giá của sản phẩm thứ hai bằng cách truy cập sản phẩm đó theo tên
  5. In ra giá của sản phẩm cuối cùng bằng cách truy cập sản phẩm đó theo tên

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

apple,banana,orange,grape
2,1,3,4

Đầu ra sẽ là:

apple banana orange  grape 
    2      1      3      4 
banana 
     1 
grape 
    4

Lưu ý: Truy cập phần tử thứ hai và phần tử cuối cùng bằng tên làm chỉ số (một chuỗi, ví dụ prices["banana"]), không dùng vị trí bằng số. Tên lấy từ dòng đầu vào thứ nhất, vì vậy trước tiên hãy tìm đúng tên trong dòng đó.

Tự làm thử

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

# Phân tích các đầu vào được phân tách bằng dấu phẩy
product_names <- strsplit(products_input, ",")[[1]]
price_values <- strsplit(prices_input, ",")[[1]]

# TODO: Viết code bên dưới
# 1. Tạo một vectơ số từ các mức giá
# 2. Gán tên sản phẩm cho vectơ bằng names()
# 3. In ra toàn bộ vectơ có tên
# 4. In ra giá của sản phẩm thứ hai bằng cách truy cập theo tên
# 5. In ra giá của sản phẩm cuối cùng bằng cách truy cập theo tên
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