You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用case_when实现“否则保留原值”?R语言向量条件修改

解决方案

1. 基础R直接索引赋值(最简洁直接)

直接利用向量索引定位b == 1的位置,将a对应位置替换为99:

a <- c(0, 1, 2, 3, 4, NA, NA, 7)
b <- c(0, 0, 0, 0, 0, 0, 1, 0)

a[b == 1] <- 99
a
# 输出结果:[1]  0  1  2  3  4 NA 99  7

这种方法不需要加载额外包,执行效率高,完全满足需求。

2. 使用dplyr的case_when实现(含“否则保留原值”逻辑)

case_when按顺序匹配条件,要实现“否则保留原值”,只需在最后添加TRUE ~ 原值的分支——TRUE会匹配所有未被前面条件覆盖的情况:

library(dplyr)

a <- c(0, 1, 2, 3, 4, NA, NA, 7)
b <- c(0, 0, 0, 0, 0, 0, 1, 0)

a <- case_when(
  b == 1 ~ 99,  # 当b=1时替换为99
  TRUE ~ a      # 所有其他情况保留a的原始值
)
a
# 输出结果:[1]  0  1  2  3  4 NA 99  7

原始的NA值因为不满足b == 1的条件,会被TRUE ~ a分支保留,完全符合预期。

内容的提问来源于stack exchange,提问作者SpecialK201

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:20:38