Menu
CoddyTech

Sắp xếp vector

Thuộc phần Logic và luồng điều khiển trong hành trình R của Coddy. Bài học 37 trên 64.

sort(x) trả về các giá trị của x theo thứ tự tăng dần, còn decreasing = TRUE đảo ngược thứ tự đó. Vector ban đầu không thay đổi:

scores <- c(72, 95, 60, 88)
print(sort(scores))
print(sort(scores, decreasing = TRUE))
print(scores)

Đầu ra:

[1] 60 72 88 95
[1] 95 88 72 60
[1] 72 95 60 88

Văn bản được sắp xếp theo thứ tự bảng chữ cái. Thứ tự chính xác tùy thuộc vào cài đặt ngôn ngữ của hệ thống: trên Coddy, cũng như trên nhiều máy chủ, chữ in hoa đứng trước chữ thường, nên "Zed" đứng trước "ada". Hãy chuyển đổi bằng tolower() khi không cần phân biệt chữ hoa và chữ thường:

names <- c("cy", "Zed", "ada")
print(sort(names))
print(sort(tolower(names)))

Đầu ra:

[1] "Zed" "ada" "cy" 
[1] "ada" "cy"  "zed"

rev(x) đảo ngược thứ tự hiện tại mà không sắp xếp, còn head(x, n) giữ lại n phần tử đầu tiên. Kết hợp với sort(), chúng tạo thành danh sách các giá trị cao nhất:

scores <- c(72, 95, 60, 88)
print(rev(scores))
print(head(sort(scores, decreasing = TRUE), 2))

Đầu ra:

[1] 88 60 95 72
[1] 95 88

Một vector có tên đã sắp xếp giữ mỗi tên cùng với giá trị của nó, vì vậy các tên xuất hiện theo thứ tự của các giá trị:

stock <- c(tea = 12, jam = 3, oil = 7)
low_first <- sort(stock)
print(names(low_first))
print(low_first[["jam"]])

Kết quả:

[1] "jam" "oil" "tea"
[1] 3
challenge icon

Thử thách

Dễ

Hoàn thiện top_scores(scores, n). Trả về n điểm số cao nhất theo thứ tự từ cao xuống thấp, được nối bằng , . Nếu có ít hơn n điểm số, hãy trả về tất cả.

Code được cung cấp đọc điểm số từ một dòng, trong đó các điểm được phân tách bằng dấu phẩy, cùng với n, rồi in ra giá trị trả về.

Tự làm thử

top_scores <- function(scores, n) {
  # Viết code của bạn ở đây
  ""
}

# Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(top_scores(as.numeric(strsplit(input[1], ",")[[1]]), as.numeric(input[2])), sep = "\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 Logic và luồng điều khiển

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