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

如何将多个测序txt文件的列作为新列合并到同一个DataFrame中

你使用purrr::map_df()默认是按行拼接所有读入的表格,每个文件的58524行都会追加到上一个文件的行下方,因此总数据量为226*58524=13226424行,和你遇到的情况完全吻合。

方案1(适用你当前Gene列顺序完全一致的场景,速度最快)

library(tidyverse)
# 匹配所有txt文件,修正正则转义符
filelist <- list.files(pattern = ".*\\.txt") 

# 读取第一个文件,保留Gene列和第一个样本列
final_df <- read_table2(filelist[1])
# 遍历剩余文件,仅提取第二列(样本表达量列)拼接到结果表后
for (f in filelist[-1]) {
  temp_df <- read_table2(f)
  final_df <- bind_cols(final_df, temp_df[, 2, drop = FALSE])
}

运行后得到的final_df就是58524行、227列(1列Gene+226列样本)的目标表格,所有样本列的列名会自动保留各文件里的样本ID。

方案2(更通用,后续即使Gene列顺序不一致也可正常合并)

library(tidyverse)
filelist <- list.files(pattern = ".*\\.txt") 

final_df <- map(filelist, ~read_table2(.x)) %>% 
  # 按Gene列关联拼接所有表格,相同基因合并到同一行
  reduce(full_join, by = "Gene")

该方案会自动对齐所有文件的Gene名称,即使不同文件的Gene顺序不同、甚至有缺失的基因也能正确合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 08:39:00