Menu
CoddyTech

买什么

本课属于 Coddy R 学习旅程的“基础知识”单元。第 78 课,共 78 课。

challenge icon

挑战

简单

创建一个名为 what_to_buy 的函数,它接受两个参数:budget(数值)和 prices(包含商品价格的命名向量)。函数应返回一个字符向量,其中包含所有价格小于或等于预算的商品名称。

如果没有买得起的商品,请使用 character(0) 返回一个空字符向量。

你将收到以下输入:

  1. 预算金额(一个数字)
  2. 以逗号分隔的商品名称列表(例如,apple,banana,steak,bread)
  3. 以逗号分隔的对应价格列表(例如,2,1,15,3)

解析输入以创建价格命名向量,调用你的函数,并打印结果。使用 print() 显示返回的字符向量。

例如,如果输入是:

5
apple,banana,steak,bread
2,1,15,3

输出应为:

[1] "apple"  "banana" "bread"

如果输入是:

10
laptop,phone,tablet
999,599,399

输出应为:

character(0)

提示:

  • 使用 strsplit(input, ",")[[1]] 将逗号分隔的字符串拆分为向量
  • 使用 as.numeric() 将价格字符串转换为数字
  • 使用 names(prices) <- item_names 创建命名向量
  • 使用 names() 进行逻辑索引,提取买得起的商品名称

亲手试试

# 读取输入
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# 解析输入
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])

# 创建以商品名称为名称的价格向量
prices <- price_values
names(prices) <- item_names

# TODO:在下方编写函数 what_to_buy
# 该函数应接收 budget 和 prices 作为参数
# 并返回一个包含买得起的商品名称的字符向量


# 调用函数并打印结果
result <- what_to_buy(budget, prices)
print(result)

基础知识中的所有课

自己练习: R 在线编译器