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

如何在R中循环合并带相同后缀的INFO与DATA数据框?

用循环批量合并INFO与DATA对应工作表数据

当然可以用循环批量搞定,不用重复写相同代码,给你两种实用的实现方式:

方式一:for循环

先定义要处理的编号范围(比如你有2组数据就写1:2,可根据实际修改),循环读取对应工作表并合并,最后把结果存到列表里方便管理:

library(readxl)
File <- "path to excel"
# 定义要处理的组数范围,可按需修改
num_groups <- 1:2
# 创建空列表存储合并后的结果
PCR_list <- list()

for(i in num_groups) {
  # 动态生成工作表名称
  info_sheet <- paste0("INFO", i)
  data_sheet <- paste0("DATA", i)
  
  # 读取对应工作表数据
  INFO <- read_excel(File, sheet = info_sheet)
  DATA <- read_excel(File, sheet = data_sheet)
  
  # 合并数据并存入列表
  PCR_list[[i]] <- merge(INFO, DATA)
}

# 可选:把列表里的结果转为单独的PCR1、PCR2变量
for(i in num_groups) {
  assign(paste0("PCR", i), PCR_list[[i]])
}

方式二:lapply函数(更简洁的R风格写法)

用lapply可以省去手动管理循环索引的步骤,代码更紧凑:

library(readxl)
File <- "path to excel"
num_groups <- 1:2

PCR_list <- lapply(num_groups, function(i) {
  INFO <- read_excel(File, sheet = paste0("INFO", i))
  DATA <- read_excel(File, sheet = paste0("DATA", i))
  merge(INFO, DATA)
})

# 可选:将列表元素转为全局环境中的单独变量
names(PCR_list) <- paste0("PCR", num_groups)
list2env(PCR_list, envir = .GlobalEnv)

额外提示

  • 默认merge会按所有同名列合并数据,如果需要指定特定合并列,可添加by = "你的列名"参数,比如merge(INFO, DATA, by = "样本ID")
  • 如果不确定具体有多少组数据,可以先读取所有工作表名称再自动提取编号:
all_sheets <- excel_sheets(File)
info_sheets <- grep("^INFO", all_sheets, value = TRUE)
# 从INFO1、INFO2中提取数字编号
nums <- gsub("INFO", "", info_sheets)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:06:32