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

如何识别数据框中值全同的列并替换为指定新列

解决R语言数据框全值相同列的替换问题

完整实现代码

先回顾你的原始数据和已有的识别逻辑:

# 原始数据框
df <- data.frame(c(1:5), c(6:10), rep(1,length(5)), c(11:15), rep(4,length(5)))
# 识别值不全部相同的列(你已完成的代码)
i1 <- sapply(df, function(x) length(unique(x)) > 1)

接下来执行替换操作,只需两步:

  1. 构造替换用的向量:第一行是1,其余行是0
replace_vec <- c(1, rep(0, nrow(df) - 1))
  1. 把所有值全相同的列(即!i1对应的列)替换为上述向量
df[, !i1] <- replace_vec

验证结果

运行print(df)可以看到替换后的效果:

c.1.5. c.6.10. rep.1..length.5. c.11.15. rep.4..length.5.
1      1       6                1       11                1
2      2       7                0       12                0
3      3       8                0       13                0
4      4       9                0       14                0
5      5      10                0       15                0

简化写法

如果不想单独存储i1,可以直接合并为一行代码:

df[, sapply(df, function(x) length(unique(x)) == 1)] <- c(1, rep(0, nrow(df)-1))

逻辑说明

  • sapply(df, function(x) length(unique(x)) == 1)直接筛选出所有值全相同的列
  • replace_vec的长度和数据框行数完全匹配,R会自动将该向量赋值给每一个目标列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:10:29