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

如何通过循环批量重命名多个数据框中含type_category前缀的变量

R语言批量重命名指定前缀列的实现方案

核心思路:每个数据框仅存在1个名称包含type_category的目标列,只需匹配到该列后统一替换列名即可,支持批量处理多个数据文件。

方案1:基础R实现(无需额外依赖)

如果你的数据框已加载到全局环境,先将所有待处理数据框存入列表统一操作:

# 把所有待处理数据框放入列表
df_list <- list(df1, df2)

# 遍历列表批量重命名
df_list <- lapply(df_list, function(x) {
  # 匹配包含type_category的列名
  target_col <- grep("type_category", colnames(x), value = T)
  # 替换列名
  colnames(x)[colnames(x) == target_col] <- "type_category"
  return(x)
})

# (可选)将处理后的数据框放回全局环境
list2env(setNames(df_list, c("df1", "df2")), envir = .GlobalEnv)

处理完成后可通过colnames(df1)验证结果,输出为:[1] "id" "type_category" "rating",符合预期。

方案2:tidyverse风格实现(代码更简洁)

使用dplyr的rename_with函数快速匹配替换:

library(dplyr)

df_list <- list(df1, df2) %>% 
  lapply(function(x) {
    x %>% 
      # 匹配所有以type_category开头的列,统一重命名
      rename_with(~"type_category", starts_with("type_category"))
  })

扩展:读取文件时直接处理

如果数据还没加载,可在读取文件的环节直接完成重命名,省去后续单独处理步骤:

# 示例:读取data目录下所有csv文件并统一处理列名
library(dplyr)

file_paths <- list.files("data", pattern = "\\.csv$", full.names = TRUE)
all_df <- lapply(file_paths, function(path) {
  read.csv(path) %>% 
    rename_with(~"type_category", starts_with("type_category"))
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:18:01