添加和删除键
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 9 课,共 64 课。
如果键已存在,按名称赋值会更新它的值;如果键不存在,则会添加一个新条目:
stock <- c(apples = 12, pears = 3)
stock["pears"] <- 5
stock["plums"] <- 8
print(stock)输出:
apples pears plums
12 5 8 要根据当前值更改一个值,请读取并写入同一个键:
stock <- c(apples = 12, pears = 3)
stock["apples"] <- stock["apples"] - 2
print(stock[["apples"]])输出:
[1] 10查找表可以用 c() 创建为空表,然后一次添加一个键:
ages <- c()
ages["Ada"] <- 36
ages["Linus"] <- 21
print(names(ages))输出:
[1] "Ada" "Linus"通过保留其他所有名称,从具名向量中删除一个条目:
stock <- c(apples = 12, pears = 3, plums = 8)
stock <- stock[names(stock) != "pears"]
print(names(stock))输出:
[1] "apples" "plums" 对于列表,赋值为 NULL 会移除该项:
user <- list(name = "Ada", temp = TRUE)
user[["temp"]] <- NULL
print(names(user))输出:
[1] "name"挑战
简单完成 apply_delivery(stock, item, qty)。将 qty 加到 item 的库存中;如果库存中还没有 item,则添加 item,数量为 qty。返回更新后的库存。
提供的代码会将库存读取为 name=quantity 键值对,然后读取商品和数量。它会按库存中的顺序,将返回库存中的每一项打印为 name: quantity。
亲手试试
apply_delivery <- function(stock, item, qty) {
# 在这里编写你的代码
stock
}
# 提供的输入和输出代码:保持原样
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 = "")
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: R 在线编译器