Hallmark数据的处理及list与data.frame之间的转换

我们通常会遇到这样的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",
           )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值