R - 决策制定:初学者指南
你好,未来的R语言程序员们!我很高兴能成为你们在这个激动人心的R语言决策世界中的向导。作为一位教了多年计算机科学的老师,我看到无数学生在掌握了这些概念后都眼前一亮。那么,让我们跳进去,开始做些决策吧!
编程中的决策制定是什么?
在我们深入研究R语言的细节之前,让我们先来谈谈编程中的决策制定是什么意思。想象一下你在一个冰淇淋店里。你不会只是拿起你看到的第一个口味,对吧?你会根据你的偏好来做出选择。编程也是类似的——我们希望我们的代码能够基于某些条件来做出选择。
R语言中的基本决策制定:if
语句
语法
让我们从R语言中最基础的决策工具开始:if
语句。以下是它的基本结构:
if (condition) {
# 当条件为TRUE时执行的代码
}
一个简单的例子
假设我们想检查一个数字是否为正数。以下是如何实现:
x <- 5
if (x > 0) {
print("x是正数")
}
当你运行这段代码时,你会看到打印出" x是正数"。为什么?因为5确实大于0,所以条件 x > 0
是TRUE。
添加else
子句
但是,如果我们想在条件为FALSE时做一些事情怎么办?这时就要用到else
子句:
x <- -3
if (x > 0) {
print("x是正数")
} else {
print("x不是正数")
}
运行这段代码,你会看到" x不是正数"。else
子句给了我们处理FALSE情况的方法。
更复杂的决策:else if
有时候,生活(和编程)不仅仅是非黑即白。我们可能需要检查多个条件。这时就要用到else if
:
x <- 0
if (x > 0) {
print("x是正数")
} else if (x < 0) {
print("x是负数")
} else {
print("x是零")
}
这段代码检查x是否为正数、负数或零。这就像是一本数字的“选择你自己的冒险”书籍!
强大的switch
语句
当你有多个特定的情况需要检查时,switch
语句可以成为你的好帮手。它就像是一台代码执行的自动售货机:
day <- "Monday"
mood <- switch(day,
"Monday" = "需要咖啡",
"Friday" = "TGIF!",
"这是一个普通的日子"
)
print(mood)
这将打印出"需要咖啡"。switch
语句将day
的值与选项匹配,并返回相应的值。
使用ifelse()
进行条件执行
R语言有一个非常方便的函数叫做ifelse()
,它将if-else语句合并到一行中:
x <- 10
result <- ifelse(x > 5, "大于5", "不大于5")
print(result)
这将打印出"大于5"。ifelse()
函数非常适合快速、简单的条件判断。
比较运算符:条件构建的基础
为了做出决策,我们需要比较值。以下是R语言中的比较运算符:
运算符 | 含义 |
---|---|
< |
小于 |
> |
大于 |
<= |
小于或等于 |
>= |
大于或等于 |
== |
等于 |
!= |
不等于 |
例如:
a <- 5
b <- 10
print(a < b) # TRUE
print(a == b) # FALSE
逻辑运算符:组合条件
有时候,我们需要一次检查多个条件。这时就要用到逻辑运算符:
运算符 | 含义 |
---|---|
& |
AND(逻辑与) |
| |
OR(逻辑或) |
! |
NOT(逻辑非) |
以下是如何使用它们:
age <- 25
has_license <- TRUE
if (age >= 18 & has_license) {
print("你可以开车")
} else {
print("你不能开车")
}
这会检查某人是否既达到了法定年龄又拥有驾照,然后允许他们开车。
将所有知识整合在一起:一个现实世界的例子
让我们创建一个简单的评分系统:
grade_student <- function(score) {
if (score >= 90) {
return("A")
} else if (score >= 80) {
return("B")
} else if (score >= 70) {
return("C")
} else if (score >= 60) {
return("D")
} else {
return("F")
}
}
# 让我们来测试我们的函数
students <- c("Alice", "Bob", "Charlie")
scores <- c(95, 82, 65)
for (i in 1:length(students)) {
grade <- grade_student(scores[i])
print(paste(students[i], "得到了一个", grade, "的成绩"))
}
这个脚本定义了一个函数,根据数值分数分配字母等级,然后将其应用于一组学生。
结论
恭喜你!你已经迈出了进入R语言决策世界的第一步。记住,就像学习任何新技能一样,熟能生巧。不要害怕尝试这些概念——这是真正学习发生的方式!
在我多年的教学经验中,我发现那些敢于玩转代码、打破东西然后再次修复它们的学生往往对这些概念有更深入的理解。所以,继续前进,让你的代码做出决策,并且享受其中的乐趣吧!
Credits: Image by storyset