Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言里面双层list变成长形数据框

R语言里面双层list变成长形数据框

作者头像
生信技能树
发布于 2020-11-11 03:28:12
发布于 2020-11-11 03:28:12
69600
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

绘图需求最大的难关往往是数据整理,比如下面的双层list :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set.seed(123456)
gs=list(tmp1=list(g1=sample(1000,abs(floor(100*rnorm(1)))),
                  g2=sample(1000,abs(floor(100*rnorm(1))))),
        tmp2=list(g1=sample(1000,abs(floor(100*rnorm(1)))),
                  g2=sample(1000,abs(floor(100*rnorm(1))))),
        tmp3=list(g1=sample(1000,abs(floor(100*rnorm(1)))),
                  g2=sample(1000,abs(floor(100*rnorm(1))))))
gs

这个双层list的数据结构如下:

有3个样本,每个样本里面都是上下调基因集合,以 g1和g2区分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require("VennDiagram")
VENN.LIST <- lapply(gs, function(x) x$g1) 
venn.plot1 <- venn.diagram(VENN.LIST , NULL, 
                          fill=c("red", "blue",'green'), 
                          alpha=c(0.5,0.5,0.5), cex = 2, cat.fontface=4, 
                          category.names=c('tmp1','tmp2','tmp3'), 
                          main="g1 Gene Lists")
# To plot the venn diagram we will use the grid.draw() function to plot the venn diagram
grid.draw(venn.plot1)

require("VennDiagram")
VENN.LIST <- lapply(gs, function(x) x$g2) 
venn.plot2 <- venn.diagram(VENN.LIST , NULL, 
                          fill=c("red", "blue",'green'), 
                          alpha=c(0.5,0.5,0.5), cex = 2, cat.fontface=4, 
                          category.names=c('tmp1','tmp2','tmp3'),  
                          main="g2 Gene Lists")
# To plot the venn diagram we will use the grid.draw() function to plot the venn diagram
grid.draw(venn.plot2)

                    
grid.newpage() 
grid.draw(venn.plot1)
grid.newpage() 
grid.draw(venn.plot2)

如下所示:

韦恩图固然是一种展现方式,可以看到3个样品各自的上下调基因的overlap情况,基本上呢,随机生成的数值它们的overlap不咋地

但是呢,3个样品我们其实更想看各自的上下调基因集的生物学功能,需要把这个双层list变成长形数据框 ,超级复杂,下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
deg=gs
deg_list=lapply(names(deg), function(y){
  tmp=deg[[y]]
  data.frame(group= paste(y,unlist(lapply(names(tmp), function(x){
    rep(x,length(tmp[[x]]))
  })),sep='_') ,
  gene=unlist(tmp))
}) 
group_g=do.call(rbind,deg_list)
group_g=do.call(rbind,deg_list)
library(org.Hs.eg.db)
group_g$gene=toTable(org.Hs.egSYMBOL)[group_g$gene,2]
head(group_g)

library(clusterProfiler)

# Convert gene ID into entrez genes
head(group_g)
tmp <- bitr(group_g$gene, fromType="SYMBOL", 
            toType="ENTREZID", 
            OrgDb="org.Hs.eg.db")

de_gene_clusters=merge(tmp,group_g,by.x='SYMBOL',by.y='gene')
table(de_gene_clusters$group)
head(de_gene_clusters)

list_de_gene_clusters <- split(de_gene_clusters$ENTREZID, 
                               de_gene_clusters$group)

library(ggplot2)
gcSample= list_de_gene_clusters   
xx <- compareCluster(gcSample, fun="enrichKEGG",
                     organism="hsa", pvalueCutoff=0.05)
dotplot(xx)  

出图如下:

全部的代码,复制粘贴即可运行,但是要自己写错了,需要对R语言的数据结果有比较好理解,稍微有一点点难!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
画韦恩图那么容易,为什么拿到指定元素却有问题
这个时候,如果你的合作者并不擅长代码,可以直接打开这个csv文件,根据sum列进行筛选即可。
生信技能树
2020/12/17
8780
转录组数据的时间序列分析,你学会了吗
上周的公众号处理了不同时间序列的数据集,但因为是内置的数据集,很多分析流程都已经被pipeline函数包装了,那如果是自己的时间序列数据集该怎么分析呢?
生信菜鸟团
2022/10/31
3.3K0
转录组数据的时间序列分析,你学会了吗
What if starts with DESeq2 normlized matrix?
因为没拿到raw counts,拿到的是DESeq2 normlized matrix,为了有谱,拿airway数据用DESeq2处理两次,看下结果,比较一下是不是可行! 可行性以及解释,各位看官,往下看; 纯代码: Step1、2数据处理和两次差异分析 rm(list = ls()) options(stringsAsFactors = F) ###matrix和phenodata提取 library(airway) data(airway) exprSet <- assay(airway) gro
生信技能树
2019/08/29
4790
What if starts with DESeq2 normlized matrix?
Science杂志同款:高颜值韦恩图绘制细节调整
我找了一篇大家应该很熟悉的顶刊杂志文献,这个文献里面的图我们已经绘制了非常多啦,今天就画里面的韦恩图, 来自 2024 年 6 月份发表在 顶刊 science 杂志上的文献《Defining the KRAS- and ERK-dependent transcriptome in KRAS-mutant cancers》:
生信技能树
2025/07/16
910
Science杂志同款:高颜值韦恩图绘制细节调整
殊路同归的关键单细胞亚群鉴定算法
同时也给出来了反向鉴定关键单细胞亚群的流程,就是发表在2021年Nature Biotechnology上的Scissor算法,它们的结果非常一致,说明了算法的可靠性,而且类似的算法还有一个发表在NAR的一篇算法文章《scAB detects multiresolution cell states with clinical significance by integrating single-cell genomics and bulk sequencing data》,DOI10.1093/nar/gkac1109
生信技能树
2023/11/03
3180
殊路同归的关键单细胞亚群鉴定算法
17. R编程(三:运算符、控制语句、基本函数)
关系正确返回TRUE 否则FALSE== 相等 != 不相等>大于< 小于 ps:字母多的字符串比少的大
北野茶缸子
2021/12/17
9170
17. R编程(三:运算符、控制语句、基本函数)
文献复现(一)
文章:Identification and Analyzation of Differentially Expressed Transcription Factors in Endometrio
拉布拉多_奶芙
2024/11/04
1460
一文了解热图如何添加文本框注释
插播:我们生信技能树每个月都有一期带领初学者,0基础的生信入门培训,会有各种贴心的答疑,最新一期在7月3号,感兴趣的可以去看看呀:7月3日开课:生信入门&数据挖掘线上直播课7月班
生信技能树
2025/07/02
740
一文了解热图如何添加文本框注释
利用R绘制venn图(VennDiagram、eulerr、venneuler、limma)
另外再推荐一个在线绘制venn图的网站(除了广告较多都挺好的):https://www.meta-chart.com/venn
全栈程序员站长
2022/09/13
2.1K0
利用R绘制venn图(VennDiagram、eulerr、venneuler、limma)
目前最全的R语言-图片的组合与拼接
李誉辉,四川大学硕士在读,研究数据分析与可视化,以及网络爬虫。誉辉兄最近出的文章都是很系统的,从R ggplot2的基础讲解到三维数据可视化plot3D,文章都整理讲解得很全面系统,我本人也是很喜欢这样的文章,故而推荐给大家。
生信宝典
2019/09/29
5.7K0
目前最全的R语言-图片的组合与拼接
非靶向代谢组学—全分析流程2(以3分组为例)
这里记录下非靶向代谢组学的全分析流程,以3分组为例,即正常组、疾病组、治疗组。对于简单的2分组或者更为复杂的分组,只需要对应修改下即可。
sheldor没耳朵
2025/06/30
2540
非靶向代谢组学—全分析流程2(以3分组为例)
【资源分享】生物信息学编程实战
市面上唯一适合生物信息学从业者的教学视频 直接复制链接 https://ke.qq.com/course/285055 到浏览器即可打开购买 永不打折,但是会下架,请抓紧机会购买! 编程这个技能,随着
生信技能树
2018/06/07
4K0
一文解决韦恩图(零代码版本、R语言、python版本)
http://bioinformatics.psb.ugent.be/webtools/Venn/
用户1359560
2019/07/28
1.6K0
seurat单细胞数据处理小技巧
当有几类亚群同属于某类细胞时,比如CD4+ T细胞和CD8+ T细胞均属于T细胞,想要将他们合并在一起时,可以使用此代码。
青青青山
2022/06/30
7.5K0
seurat单细胞数据处理小技巧
全网最全的R语言基础图形合集
直方图是一种对数据分布情况进行可视化的图形,它是二维统计图表,对应两个坐标分别是统计样本以及该样本对应的某个属性如频率等度量。
生信学习者
2024/06/12
1440
全网最全的R语言基础图形合集
技术贴:R语言拼图全面介绍
说起R语言的拼图,可能大家一点都不陌生,比如常用的“cowplot”和“patchwork”。gridExtra包也提供了一个拼图函数”grid.arrange“。另外,南方医科大学余光创教授也开发了一个更为神奇的拼图R包:aplot。本文将依次对它们的用法进行介绍。
作图丫
2022/03/29
6K0
技术贴:R语言拼图全面介绍
可以旋转的3D韦恩图你见过吗?
韦恩图是一种在科研文章中非常常见的图示法,比如在转录组数据中,常常会涉及到几千甚至上万的基因数量,有时为了研究需要,会分别获得两组或多组数据中具有某种特定功能或特点的基因集。通过绘制韦恩图,可以直观的显示出这些特定功能的基因集中,哪些是组间共有的基因,哪些是每组独有的基因[PMID: 32388965]。
百味科研芝士
2020/10/09
1.3K0
可以旋转的3D韦恩图你见过吗?
【R语言】复现paper中的韦恩图
韦恩图(venn)又称文氏图,是科研文章中最常见的图,可以用来表示多个数据集之间的关系。当然也可以进行集合运算。一般用于展示2-5个集合之间的交并集关系。集合数目更多时,将会比较难分辨,更多集合的展示方式一般使用upSetView。绘制韦恩图的工具有很多,这里小编先给没有任何编程基础的人推荐几款比较好用的网络工具。
生信交流平台
2022/09/21
9630
【R语言】复现paper中的韦恩图
生信数据分析可靠与否是一个伪命题
最简单的一个生物信息学数据分析案例,可以是针对一个表达量矩阵以及里面的样品分组进行差异分析,然后拿到统计学显著的上下调基因列表,因为基因数量很多,所以我们默认会做一些生物学功能数据库注释。这里面的生物信息学算法就差异分析和注释算法, 它本身是非常可靠的!
生信技能树
2024/11/21
1330
生信数据分析可靠与否是一个伪命题
2023.4生信马拉松day7-R语言综合应用
-(3)注意:之前提到过,矩阵的某一列不能单独转换数据类型,需要把矩阵转换成数据框再转换某列的数据类型;或者把这列单独提取出来再转换其数据类型;
清南
2023/04/20
4K0
推荐阅读
相关推荐
画韦恩图那么容易,为什么拿到指定元素却有问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验