命名向量查找
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 7 课,共 64 课。
命名向量会将值存储在名称下,因此它可以用作查找表:名称是键,元素是它的值。将名称放在 [[ ]] 中,即可单独获取该值。
prices <- c(tea = 4, cake = 7)
print(prices[["cake"]])
print(names(prices))输出:
[1] 7
[1] "tea" "cake"单层方括号会返回元素及其名称。[[ ]] 只返回值:
prices <- c(tea = 4, cake = 7)
print(prices["cake"])
print(prices[["cake"]] * 2)输出:
cake
7
[1] 14名称可以来自一个变量,程序可以用它查找从输入中读取的键:
prices <- c(tea = 4, cake = 7)
item <- "tea"
print(prices[[item]])输出:
[1] 4名称向量可以一次查找多个键,包括重复项,因此 sum() 可以一步算出订单总价:
prices <- c(tea = 4, cake = 7)
order <- c("tea", "cake", "tea")
print(sum(prices[order]))输出:
[1] 15缺失名称在两种形式中的行为不同:prices["milk"] 返回 NA,而 prices[["milk"]] 会因错误 subscript out of bounds 而停止。
挑战
简单完成 line_total(item, qty)。这个函数定义了下面的菜单。返回 item 的价格乘以 qty,并保留两位小数:tea 和 3 得到 7.50。
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)输入中的每个商品都在菜单上。提供的代码会读取商品和数量,并打印返回的值。
亲手试试
line_total <- function(item, qty) {
menu <- c(tea = 2.5, coffee = 3, cake = 4.25, soup = 6)
# 在这里编写你的代码
""
}
# 已提供的输入和输出代码:保持原样
input <- suppressWarnings(readLines(file("stdin")))
cat(line_total(input[1], as.numeric(input[2])), sep = "\n")
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: R 在线编译器