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")技术支持
- 'even'
- 'odd'
- 'even'
- 'odd'
- '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 中使用函数教程。
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"。
上述代码的输出为:
'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。
上述代码使用 str(x) 展示了数据框的结构,显示有 5 条观测与 2 个变量,并打印出了 Student 和 Marks 的相应取值。
上述代码的输出如下:
上述代码中,
'x$Result'作为变量用于在数据框中新增一列 Result。ifelse() 函数中的表达式'x$"Marks">40'会从 Marks 列中取向量值进行判断:当分数大于 40 时将 Result 设为 Pass,否则设为 Fail。恭喜您
恭喜您,已经学完本教程!
您已经学习了 R 的 ifelse() 函数及其语法,了解了如何判断数字是奇数还是偶数,并通过示例判断学生考试是否及格。
如果您想继续学习 R,欢迎查看我们的R 学习资源。
看看我们的在 R 中使用函数教程。