如何为R语言dataframe行名添加'gene_id'标题并实现数据关联
如何将dataframe行名转为名为
gene_id的列? 要实现把res的行名转为带gene_id标题的列,方便后续和anno做left_join,有两种常用方法:
方法1:使用tidyverse的rownames_to_column(推荐,适配后续join操作)
如果你已经在使用tidyverse工具(比如dplyr的left_join),这个方法最简洁:
library(tidyverse) # 把行名转为名为gene_id的列 res <- res %>% rownames_to_column(var = "gene_id")
转换后res的结构就会变成你想要的样子:
>res gene_id baseMean log2FoldChange lfcSE stat pvalue padj <numeric> <numeric> <numeric> <numeric> <numeric> <numeric> 27395 1268.40 0.100013 0.164840 0.606731 5.44029e-01 0.737925231 18777 1413.56 -0.266365 0.175847 -1.514758 1.29834e-01 0.312449929 21399 3376.09 -0.243707 0.132616 -1.837687 6.61086e-02 0.196027163
方法2:基础R实现(无需额外加载包)
如果不想加载tidyverse,用基础R代码也能实现:
# 先添加gene_id列,值为原行名 res$gene_id <- rownames(res) # 清除原行名 rownames(res) <- NULL # 调整列顺序,把gene_id移到第一列 res <- res[, c("gene_id", setdiff(colnames(res), "gene_id"))]
后续关联操作
转换完成后,就可以正常执行你的left_join操作了:
res_anno <- left_join(res, anno, by = "gene_id")
内容的提问来源于stack exchange,提问作者claraina
相关产品推荐
相关产品推荐

