跳至主要内容

R 中的 IF ELSE 函数

详细学习 ifelse() 函数,包括语法、如何判断数字是奇数还是偶数,以及用于判断学生是否及格的示例。
· 4分钟 阅读

使用 AI 探索

banner

ifelse() 函数是 R 中 if-else 语句的替代与简写形式。同时,它采用“向量化”的技术,使操作更快。与其多次以单个值作为参数传入,不如一次性将所有向量值作为参数传入。

语法

R 中 ifelse() 函数的语法为:
ifelse(logical_expression, a , b)

上述 ifelse 的参数说明:
1. logical_expression: 表示一个输入向量,函数会返回与其相同长度的输出向量。
2. a: 当 logical_expression 为 TRUE 时执行。
3. b: 当 logical_expression 为 FALSE 时执行。

示例(奇数或偶数)

下面快速看一个示例,以下代码会检查数字是奇数还是偶数。v 是包含一组数字的向量。在 ifelse 函数中,表达式 v%%2==1 检查 v 中每个数字对 2 取模的余数是否为 1;若为 TRUE 则输出 "odd",否则为 FALSE 时输出 "even"。

v = c(14,7,6,9,2)
ifelse(v %% 2 == 1,"odd","even")
  1. 'even'
  2. 'odd'
  3. 'even'
  4. 'odd'
  5. 'even'

上述代码的输出为:
'even' 'odd' 'even' 'odd' 'even'
其内部工作过程会先生成一个逻辑向量 c(FALSE,TRUE,FALSE,TRUE,FALSE)。第一个参数会形成字符串向量 c("odd","odd","odd","odd","odd"),而第二个参数会形成字符串向量 c("even',"even","even","even","even")。最后,对应为 TRUE 的元素会变为 'odd',而为 FALSE 的元素会变为 'even'。

示例(及格或不及格)

下面的示例演示了 ifelse() 函数与 DataFrame 的配合使用。如果学生分数高于 40,则视为 "Pass",否则视为 "Fail"。

我们快速创建一个数据框,其中一列名为 "Student",输入向量为 ("Ron", "Jake", "Ava", "Sophia", "Mia");另一列为 "Marks",输入向量为 (35,75,45,30,85)。最后将两列合并成数据框并存入 x。

x <- data.frame("Student" = c("Ron","Jake","Ava","Sophia","Mia"),"Marks" = c(35,75,45,30,85))
str(x)
'data.frame':    5 obs. of  2 variables:
 $ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
 $ Marks  : num  35 75 45 30 85
'data.frame':    5 obs. of  2 variables:
 $ Student: Factor w/ 5 levels "Ava","Jake","Mia",..: 4 2 1 5 3
 $ Marks  : num  35 75 45 30 85

上述代码使用 str(x) 展示了数据框的结构,显示有 5 条观测与 2 个变量,并打印出了 Student 和 Marks 的相应取值。

x$Result = ifelse(x$"Marks">40,"Pass","Fail")
print(x)

上述代码的输出如下:

    Student Marks Result
1    Ron    35   Fail
2   Jake    75   Pass
3    Ava    45   Pass
4 Sophia    30   Fail
5    Mia    85   Pass 

上述代码中,'x$Result' 作为变量用于在数据框中新增一列 Result。ifelse() 函数中的表达式 'x$"Marks">40' 会从 Marks 列中取向量值进行判断:当分数大于 40 时将 Result 设为 Pass,否则设为 Fail。

恭喜您

恭喜您,已经学完本教程!

您已经学习了 R 的 ifelse() 函数及其语法,了解了如何判断数字是奇数还是偶数,并通过示例判断学生考试是否及格。

如果您想继续学习 R,欢迎查看我们的R 学习资源。

看看我们的在 R 中使用函数教程。

主题