我们通常会遇到这样的list

讯享网
如何将他转化成data.frame呢?
我们可以利用 ldply() 函数
#这里是将GSEA的Hallmark 转化成矩阵,方便我后续的处理。 df <- ldply(Hs.h.all.v7.1.entrez,data.frame)
讯享网

结果如图所示

后续处理
因为Hallmark并未给出这些pathway的 Process category,我准备自己加上去。参考 MSigBD文章 进行标注。
讯享网library(dbplyr) library(plyr) library(clusterProfiler) library(org.Hs.eg.db) library(tidyverse) Hs.h.all.v7.1.entrez #这里其实是测试这个函数是否可行 df <- ldply(Hs.h.all.v7.1.entrez,data.frame) unique(df$.id)#查看数据是否出错 # gene_symbol <- bitr(df$X..i.., # fromType="ENTREZID", # toType="SYMBOL", # OrgDb="org.Hs.eg.db") #写一个id转换的function,放到lapply()函数里使用。 transid <- function(i,data = Hs.h.all.v7.1.entrez){
gene_symbol <- bitr(Hs.h.all.v7.1.entrez[[i]], fromType="ENTREZID", toType="SYMBOL", OrgDb="org.Hs.eg.db") } #将entrezID转换成genesymbol a <- lapply(names(Hs.h.all.v7.1.entrez),transid) #names(a)[1] <- names(Hs.h.all.v7.1.entrez[1]) #将名称对应 for (i in 1:length(names(Hs.h.all.v7.1.entrez))) {
names(a)[i] <- names(Hs.h.all.v7.1.entrez[i]) } #a[[1]]$ENTREZID <- NULL #删除ENTREZID列,因为我不需要这列 for (i in 1:length(names(a)) ) {
a[[i]]$ENTREZID <- NULL } #将list转化成data.frame b <- ldply(a,data.frame) #复制新的一列,处理后用于merge b$class <- b$.id #通过正则表达式将数据处理成需要的格式 b$class <- str_extract(b$class,"(?<=\\_)[^\\_].+") #使用merge()将每个pathway和Process category 对应起来 c <- merge(b,Hallmark_category, by.x = "class", by.y = "Hallmark name", )
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/130232.html