Menu
CoddyTech

Thêm và xóa khóa

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

Gán vào một tên sẽ cập nhật giá trị nếu khóa đã tồn tại và thêm một mục mới nếu chưa có:

stock <- c(apples = 12, pears = 3)
stock["pears"] <- 5
stock["plums"] <- 8
print(stock)

Đầu ra:

apples  pears  plums 
    12      5      8 

Để thay đổi một giá trị dựa trên giá trị hiện tại của nó, hãy đọc rồi ghi vào cùng một khóa:

stock <- c(apples = 12, pears = 3)
stock["apples"] <- stock["apples"] - 2
print(stock[["apples"]])

Đầu ra:

[1] 10

Bạn có thể tạo bảng tra cứu trống bằng c() rồi thêm từng khóa:

ages <- c()
ages["Ada"] <- 36
ages["Linus"] <- 21
print(names(ages))

Đầu ra:

[1] "Ada"   "Linus"

Xóa một phần tử khỏi mảng có tên bằng cách giữ lại mọi tên khác:

stock <- c(apples = 12, pears = 3, plums = 8)
stock <- stock[names(stock) != "pears"]
print(names(stock))

Đầu ra:

[1] "apples" "plums" 

Với danh sách, gán NULL sẽ xóa mục đó:

user <- list(name = "Ada", temp = TRUE)
user[["temp"]] <- NULL
print(names(user))

Đầu ra:

[1] "name"
challenge icon

Thử thách

Dễ

Hoàn thiện apply_delivery(stock, item, qty). Cộng qty vào lượng hàng tồn kho của item, hoặc thêm item với số lượng qty nếu mặt hàng đó chưa có trong kho. Trả về lượng hàng tồn kho đã cập nhật.

Code được cung cấp đọc dữ liệu hàng tồn kho dưới dạng các cặp name=quantity, sau đó đọc mặt hàng và số lượng. Code in ra từng mục trong lượng hàng tồn kho được trả về dưới dạng name: quantity, theo thứ tự trong kho.

Tự làm thử

apply_delivery <- function(stock, item, qty) {
  # Viết code của bạn ở đây
  stock
}

# Đoạn code đầu vào/đầu ra đã cho: giữ nguyên
input <- suppressWarnings(readLines(file("stdin")))
stock <- c()
for (pair in strsplit(input[1], ",")[[1]]) {
  kv <- strsplit(pair, "=")[[1]]
  stock[kv[1]] <- as.numeric(kv[2])
}
stock <- apply_delivery(stock, input[2], as.numeric(input[3]))
for (name in names(stock)) {
  cat(name, ": ", stock[[name]], "\n", sep = "")
}
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