现在位置: 首页 > R 教程 > 正文

R ifelse() 函数 - 向量化条件判断

R 语言实例 R 语言实例

R ifelse() 函数用于对向量进行逐元素的条件判断和赋值。

ifelse() 是向量化版本的 if...else,可以一次性处理整个向量,比循环高效。

ifelse() 函数语法格式如下:

ifelse(test, yes, no)

参数说明:

  • test 逻辑条件表达式。

  • yes 条件为 TRUE 时返回的值。

  • no 条件为 FALSE 时返回的值。

实例

scores <- c(85, 92, 78, 95, 88, 72, 90, 68, 82, 89)

# 用 ifelse 判断是否及格
result <- ifelse(scores >= 60, "及格", "不及格")
print("及格判断:")
print(result)

# 多级判断(嵌套 ifelse)
grade <- ifelse(scores >= 90, "优秀",
         ifelse(scores >= 80, "良好",
         ifelse(scores >= 70, "中等",
         ifelse(scores >= 60, "及格", "不及格"))))
print("等级判断:")
print(grade)

执行以上代码输出结果为:

[1] "及格判断:"
 [1] "及格" "及格" "及格" "及格" "及格" "及格" "及格"
 [8] "及格" "及格" "及格"
[1] "等级判断:"
 [1] "良好" "优秀" "中等" "优秀" "良好" "中等" "优秀"
 [8] "及格" "良好" "良好"

ifelse() 也可以用于数据清理和值替换:

实例

# 数据清理:将负值替换为 0
values <- c(10, -5, 20, -3, 15, -8, 25)
cleaned <- ifelse(values < 0, 0, values)
print("负值替换为 0:")
print(cleaned)

# 缺失值替换
data_with_na <- c(10, NA, 20, NA, 30)
replaced <- ifelse(is.na(data_with_na), 0, data_with_na)
print("NA 替换为 0:")
print(replaced)

执行以上代码输出结果为:

[1] "负值替换为 0:"
[1] 10  0 20  0 15  0 25
[1] "NA 替换为 0:"
[1] 10  0 20  0 30

R 语言实例 R 语言实例