R ifelse() 函数 - 向量化条件判断
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)
# 用 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)
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 语言实例