成员测试
本课属于 Coddy R 学习旅程的“逻辑与流程”单元。第 14 课,共 64 课。
x %in% set 会检查 x 中的每个元素,并为每个元素返回一个逻辑值。all() 用来判断所有检查结果是否都是 TRUE,any() 用来判断是否至少有一个检查结果是 TRUE。
required <- c("flour", "eggs", "milk")
pantry <- c("eggs", "salt", "flour")
print(required %in% pantry)
print(all(required %in% pantry))
print(any(required %in% pantry))输出:
[1] TRUE TRUE FALSE
[1] FALSE
[1] TRUE使用取反后的检查进行索引,按第一个向量中的顺序列出缺少的内容:
required <- c("flour", "eggs", "milk", "sugar")
pantry <- c("eggs", "flour")
missing <- required[!(required %in% pantry)]
print(missing)输出:
[1] "milk" "sugar"setequal(a, b) 用于检查两个向量是否包含相同的值,忽略顺序和重复项:
print(setequal(c("a", "b"), c("b", "a", "a")))
print(setequal(c("a", "b"), c("a", "c")))输出:
[1] TRUE
[1] FALSE对于空向量,all() 的结果是 TRUE,而 any() 的结果是 FALSE:没有需要满足的条件,也就没有遗漏的内容。
which() 会将逻辑向量转换为其中 TRUE 值的位置,这样你就能知道匹配项在哪里:
required <- c("flour", "eggs", "milk")
pantry <- c("eggs")
print(which(!(required %in% pantry)))输出:
[1] 1 3挑战
简单完成 check_recipe(required, pantry)。当所有必需食材都在食品储藏室中时,返回 ready。否则,返回 missing: ,后面跟上缺少的食材,顺序与 required 中的顺序一致,并用 , 连接。
提供的代码会读取必需食材和食品储藏室内容,这些内容各占一行并以逗号分隔,然后打印返回值。
亲手试试
check_recipe <- function(required, pantry) {
# 在这里编写你的代码
""
}
# 提供的输入和输出代码:保持原样
input <- suppressWarnings(readLines(file("stdin")))
cat(check_recipe(strsplit(input[1], ",")[[1]], strsplit(input[2], ",")[[1]]), sep = "\n")
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: R 在线编译器