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] 10Bạ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"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 = "")
}
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
1Chuỗi chuyên sâu
Chuỗi con với substr()Định dạng với sprintf()Tách và nối chuỗiTìm kiếm trong chuỗiThay thế văn bảnÔn tập: Tạo tên người dùng10Luồng điều khiển nâng cao
Hàm switch()ifelse() dạng vector hóarepeat và breakHàm đệ quyÔn tập: phân loại điểm2Tra cứu khóa-giá trị
Tra cứu vector theo tênKiểm tra khóaThêm và xóa khóaLặp qua các tênÔn tập: Bàn giao dịch cổ phiếuTự luyện tập: Trình biên dịch R online