R语言如何按列名模式批量生成重复的dataframe列?
R语言按列名模式批量复制列的高效实现
针对大尺寸dataframe场景,优先使用向量化操作实现,避免低效的显式循环,两种常用实现方案如下:
方案1:Base R 原生实现(无额外依赖,性能最优)
先筛选匹配指定模式的列,再批量赋值生成新列:
# 示例数据 df <- data.frame(x001 = c(1,2,3), x002 = c(3,4,5), x003 = c(6,7,8), soccer = c(700,600,300), volley = c(30,22,29)) # 筛选所有x00开头的列名 cols_to_copy <- grep("^x00", names(df), value = TRUE) # 批量复制生成带no2后缀的新列 df[paste0(cols_to_copy, "no2")] <- df[cols_to_copy]
方案2:dplyr 实现(适合tidyverse技术栈,代码可读性高)
使用across批量处理匹配列:
library(dplyr) df <- df %>% mutate(across(starts_with("x00"), ~.x, .names = "{col}no2"))
两种方案均基于向量化运算,无需逐列迭代,内存操作效率高,适配大体积dataframe的处理需求。
内容的提问来源于stack exchange,提问作者scarlett rouge
相关产品推荐
相关产品推荐

