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

R中按species列合并多数据框并提取kmers以文件名重命名

解决方法

问题原因

你原有代码错误修改了第二列的列名,且没有提前过滤掉reads、taxReads这类冗余列,导致合并后保留了大量不需要的字段,也没有正确将kmers列替换为来源文件名。

调整后代码

基于你原有plyr包逻辑的版本

首先确保你已经加载plyr包:

library(plyr)

修改后的完整脚本如下:

# 读取所有tsv文件
file_list = list.files(pattern="tsv$")

datalist = lapply(file_list, function(x){
  # 读入单个tsv文件
  dat = read.csv(file=x, header=T, sep = "\t")
  # 仅保留合并需要的species列和要提取的kmers列
  dat = dat[, c("species", "kmers")]
  # 将kmers列重命名为来源文件名(自动去掉.tsv后缀)
  colnames(dat)[2] = tools::file_path_sans_ext(x)
  return(dat)
})
# 按species列全连接合并
joined <- join_all(dfs = datalist,by = "species",type ="full" )

可选:tidyverse版本

如果你常用tidyverse生态,也可以用以下写法:

library(tidyverse)

file_list = list.files(pattern="tsv$")

joined <- map_dfr(file_list, function(x) {
  read_tsv(x) %>% 
    select(species, kmers) %>% 
    mutate(source = tools::file_path_sans_ext(x))
}) %>% 
  pivot_wider(names_from = source, values_from = kmers)

输出验证

运行后joined就是你需要的结构,第一列为species,后续每一列对应一个来源文件的kmers值,列名就是文件名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:24:03