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

R语言对指定列区间应用ifelse时如何保留其余列不变

解决方案

你之前的写法是仅提取2:3列传入ifelse做计算,返回的结果自然只包含这部分列。要保留未修改列的原值,只需先复制原数据集,再单独对目标列区间做赋值即可:

# 复制原数据集,保留所有列的初始值
df2 <- df
# 仅对指定列区间做值替换
df2[, 2:3] <- ifelse(df2[, 2:3] == 1, 2, 0)

运行后输出结果如下:

x y z
1 123 2 0
2 121 0 0
3 120 0 0
4 124 0 0
5 125 2 2

如果你习惯使用tidyverse语法,也可以用dplyr::across实现同样效果,适合处理大量列的场景:

library(dplyr)
df2 <- df %>%
  # 按索引区间指定要修改的列,传入替换逻辑
  mutate(across(2:3, ~ifelse(.x == 1, 2, 0)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:08