在大型GMT文件中用基因符号替换ensembl基因ID



我知道也有类似的问题,但我在谷歌上花了一整天的时间,却找不到问题的答案。我有一个GMT文件,其中我需要用基因符号替换集合ID,以运行基因集分析,我有一份数据帧,列出了集合ID及其匹配的基因符号。我可以为一列运行此代码,它可以工作:

GMTdf$V3 <- Gene_list$hgnc_symbol[match(GMTdf$V3, Gene_list$ensembl_gene_id)]

但我不知道如何循环使用GMT文件的495列。我试了很多东西,但都不管用。唯一看起来有希望的是下面的代码,但它用NA取代了所有内容。

GMTdf[,3:495] = Gene_list$hgnc_symbol[GMTdf[,3:495], Gene_list$ensembl_gene_id)]

我尝试过使用dplyr突变和StackOverflow中给出的用基因符号替换ensembl ID的建议,但我太业余了,无法理解。请帮忙。

您可以使用lapply为多个列应用一个函数。

cols <- 3:495
GMTdf[cols] <- lapply(GMTdf[cols] function(x) 
Gene_list$hgnc_symbol[match(x, Gene_list$ensembl_gene_id)])

dplyr中,您可以对across执行同样的操作。

GMTdf <- GMTdf %>% mutate(across(cols, 
~Gene_list$hgnc_symbol[match(., Gene_list$ensembl_gene_id)]))

最新更新