如何在R语言中批量将含ABC/DEF的列值替换为0?
自动替换列名含ABC/DEF的列值为0
当然可以不用手动选择列,通过正则匹配列名就能批量处理,下面是两种常用的R语言实现方法:
方法一:基础R原生写法
利用grepl函数匹配列名,筛选出目标列后直接赋值为0:
# 你的原始数据框 df <- data.frame( FFF = c(34L, 22L, 22L), ABC_1 = 3:5, DEF_2 = rep(2L, 3L), KKL = c(3L, 2L, 234L) ) # 匹配列名包含ABC或DEF的列 target_cols <- grepl("ABC|DEF", colnames(df)) # 将这些列的数值全部替换为0 df[target_cols] <- 0 # 查看结果 df
运行后得到的结果和你期望的df2完全一致。
方法二:tidyverse(dplyr)写法
如果你常用tidyverse工具包,用dplyr::across结合matches函数更简洁:
library(dplyr) df <- df %>% mutate(across(matches("ABC|DEF"), ~0))
其中matches("ABC|DEF")负责筛选列名符合正则规则的列,across对这些列统一执行替换为0的操作。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

