Menu
CoddyTech

Lặp qua các tên

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 10 trên 64.

Vòng lặp for lặp qua names(x) để truy cập từng khóa, còn x[[key]] trả về giá trị tương ứng với khóa đó:

scores <- c(ada = 91, bo = 78, cy = 85)
for (name in names(scores)) {
  cat(name, "scored", scores[[name]], "\n")
}

Đầu ra:

ada scored 91 
bo scored 78 
cy scored 85 

Các phần tử giữ nguyên thứ tự được thêm vào. Duyệt qua sort(names(x)) để sắp xếp theo thứ tự bảng chữ cái:

scores <- c(cy = 85, ada = 91, bo = 78)
for (name in sort(names(scores))) {
  cat(name, scores[[name]], "\n")
}

Đầu ra:

ada 91 
bo 78 
cy 85 

Lặp qua đầu vào và cập nhật bảng tra cứu giúp đếm số lần mỗi giá trị xuất hiện. Lần đầu tiên một từ xuất hiện, số đếm của từ đó là 1; sau đó, số đếm tăng thêm 1:

words <- c("red", "blue", "red", "green", "red")
counts <- c()
for (w in words) {
  if (w %in% names(counts)) {
    counts[w] <- counts[w] + 1
  } else {
    counts[w] <- 1
  }
}
print(counts[["red"]])
print(names(counts))

Đầu ra:

[1] 3
[1] "red"   "blue"  "green"

Để tạo các dòng đầu ra, hãy gom chúng vào một véc-tơ bên trong vòng lặp, rồi trả về hoặc in ra ở cuối:

scores <- c(ada = 91, bo = 78)
lines <- c()
for (name in names(scores)) {
  lines <- c(lines, paste0(name, ": ", scores[[name]]))
}
cat(lines, sep = "\n")

Đầu ra:

ada: 91
bo: 78
challenge icon

Thử thách

Dễ

Hoàn thiện word_counts(words). Trả về mỗi từ khác nhau trên một dòng, theo thứ tự chữ cái, với định dạng word: count.

Đoạn code được cung cấp đọc các từ trên một dòng, cách nhau bằng dấu cách, rồi in ra từng dòng được trả về.

Tự làm thử

word_counts <- function(words) {
  # Viết code của bạn ở đây
  character(0)
}

# Đoạn code đầu vào/đầu ra được cung cấp sẵn: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
cat(word_counts(strsplit(input[1], " ")[[1]]), 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