R - 决策制定:初学者指南

你好,未来的R语言程序员们!我很高兴能成为你们在这个激动人心的R语言决策世界中的向导。作为一位教了多年计算机科学的老师,我看到无数学生在掌握了这些概念后都眼前一亮。那么,让我们跳进去,开始做些决策吧!

R - Decision Making

编程中的决策制定是什么?

在我们深入研究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