Menu
CoddyTech

命名向量查找

本课属于 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 而停止。

challenge icon

挑战

简单

完成 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")
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: R 在线编译器