向量化逻辑第 2 部分
本课属于 Coddy R 学习旅程的“基础知识”单元。第 21 课,共 78 课。
和 AND、OR 一样,NOT 运算符也有向量化版本,可以对向量中的元素逐个操作。对逻辑值向量应用 ! 时,它会逐个翻转每个元素。
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUE每个 TRUE 都会变成 FALSE,每个 FALSE 都会变成 TRUE。当你想找出不满足某个条件的元素时,这尤其有用:
temperatures <- c(18, 25, 30, 15, 22)
# 找出不高于 20 的温度
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSE你可以将向量化的 NOT 与 & 和 | 结合起来,构建复杂的筛选条件:
ages <- c(16, 25, 17, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# 满足以下条件即可参加:age >= 18,或(未满 18 岁且获得许可)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE记住:处理向量时使用单个 &、| 和 !,比较单个值时使用双个 &&、||。
挑战
简单使用向量化的 NOT 运算符(!),以及 & 和 |,创建复杂的逐元素逻辑条件。
已提供以下向量:
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)使用向量化逻辑运算符(包括 NOT 运算符)创建以下逻辑向量:
- 创建一个名为
failed的向量,对于每个分数不大于或等于 60 的学生,存储TRUE - 创建一个名为
absent的向量,存储与attended相反的值(翻转每个值) - 创建一个名为
at_risk的向量,对于每个没有出席或没有提交作业的学生,存储TRUE - 创建一个名为
passing_but_absent的向量,对于每个分数大于或等于 60并且没有出席的学生,存储TRUE - 创建一个名为
needs_support的向量,对于满足以下条件的每个学生,存储TRUE:(分数小于 50)或(没有出席并且没有提交作业)
使用 print() 函数,按此顺序显示 failed、absent、at_risk、passing_but_absent 和 needs_support。
亲手试试
# 给定的向量
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)
# TODO: 在下方编写你的代码
# 1. 创建 'failed':分数不满足 >= 60 时为 TRUE
# 2. 创建 'absent':值与 attended 相反
# 3. 创建 'at_risk':未出勤或未提交作业
# 4. 创建 'passing_but_absent':分数 >= 60 且未出勤
# 5. 创建 'needs_support':(分数 < 50)或(未出勤且未提交作业)
# 打印结果
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: R 在线编译器