【生信笔记】数据框按照特定顺序修改列名

在前期我们为大家介绍了【R包荟萃】热图绘制工具:pheatmap包详解,其中想要绘制分组的热图时需要两个数据,即原始表达矩阵mat和分组信息annotation_col,其中annotation_col指的是表达矩阵中列的分组信息,需要使用相应的列名称来匹配数据和注释中的列,格式要求为数据框。

在实际绘图中我们发现当不对列进行聚类时,数据展示是以表达矩阵的列名顺序显示结果,而此时组别的信息将也会按照列名的顺序进行排列,如图所示组别将会凌乱,不会依序显示。

pheatmap(mat, cluster_cols = F, cluster_rows = T, scale="row", annotation_col = annotation_col, annotation_colors = ann_colors, show_rownames = F, show_colnames = F, fontsize = 10, border_color = NA, color = colorRampPalette(c("blue","white","red"))(50))

如果想要组别按照GroupA和GroupB的顺序显示,解决的办法其实就是列名按照组别的顺序重新排列,最简单的办法就是在Excel中重新修改列名顺序,但是如果数据量多的话则会非常难使,那么既然学习了编程,有没有什么简单的方法能够实现这一目的,即数据框按照特定顺序修改列名呢?

这时,我们需要用到match函数,匹配函数(match)返回一个位置向量,表示 x 匹配table的位置。

  • x:被匹配的向量

  • table:其他向量跟该向量进行匹配,x向量中的每一个元素都跟table向量中的每一个元素进行比较;

  • nomatch:不匹配时,函数返回的整数值。默认值是NA

  • incomparables :指定不能匹配的值的向量,在x向量中的任何值,如果是incomparables参数中的值,那么返回nomatch参数的值。由于历史原因,FALSE 和NULL相等。

因此我们可以利用

a<- match(rownames(annotation_col), colnames(mat))

获得一个组别的列名在表达矩阵中的位置向量,然后再利用数据框操作命令重新排列

mat[,a]

这时再重新绘制热图就可以看到组别按照顺序排列了。

致谢:感谢生信地球花花是小洁的分身的提示。

(0)

相关推荐

  • 《R语言实战》- 牛国庆

    [toc] 第一章 1.3.2 R中帮助函数 R中用于管理R工作空间的函数 函数setwd()不会自动创建一个不存在的目录.如果必要的话,可以使用函数dir.create()来创建新目录,然后使用se ...

  • R语言学习笔记

    R语言学习笔记

  • 16s分析之差异展示(热图)

    前两天我向大家推了16s做差异分析的两个包(没有看的请点击下面链接): 1.16s分析之差异分析(DESeq2) 2.16s分析之差异OTU 挑选(edgeR) 差异做出来了如何展示,也是一个值得思考 ...

  • 【从零学习OpenCV 4】这4种读取Mat类元素的的方法你都知道么?

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • Python使用三种方法实现PCA算法

    主成分分析(PCA) vs 多元判别式分析(MDA) PCA和MDA都是线性变换的方法,二者关系密切.在PCA中,我们寻找数据集中最大化方差的成分,在MDA中,我们对类间最大散布的方向更感兴趣. 一句 ...

  • 【生信笔记】高速下载测序数据:Aspera的安装与使用

    当我们需要一些NGS数据时,一般会去NCBI或者EBI的数据库中下载.但是当我们用wget下载时,时常会出现断开连接或者网络下载速度缓慢,对于几十G或者上百G的数据,下载无计可施,这是则可以使用Asp ...

  • 技巧 | 30Mb/s-高速-生信大数据-跨地域-传输

    写在前面 最近需要紧急跑一批数据,然而手上的计算资源着实有限.唯一想得到的解决办法就是蹭一下老铁的数据平台(PB级存储).于是问题出现了,手上接近 1T 的数据,如何快速传输到距离太远的省份? 面临的 ...

  • 【生信笔记】如何避免基因名称被Excel自动转换?

    在进行生信分析时我们会发现,将测序数据用Microsoft Excel打开后,部分基因名会自动转换为日期或浮点. 例如,将下表中第一列的数据导入Excel后,将自动转换为第二列的内容: 一旦导入Exc ...

  • 【生信笔记】Linux如何自动登录服务器账号?

    在使用服务器时,往往需要进行密码登录,甚至有的需要先登录堡垒机,再登录开发机,输入过程较为繁琐,因此可以考虑将命令写成脚本的形式自动化登录. expect是一个能实现自动和交互式任务的解释器,它也能解 ...

  • 【生信笔记】R语言将Excel文件按照列名拆分为多个文件

    首先来看拿到这组数据,需要按照outcome的列名不同将数据保存为Paresthesia.csv和Dry mouth.csv两个文件,假如数据量少,我们一般在Excel进行筛选(保证列名存在,直接复制 ...

  • 【生信笔记】右键菜单打开WSL功能方法简介

    在人工智能以及生物信息学发展迅速的现在,充分掌握相关技术是非常重要的,而由于系统的差异,导致很多软件需要在Linux或者Mac OS上运行,长期以来,在Windows系统上解决这一难题的方式是安装虚拟 ...

  • 生信笔记 | 自定义GSEA分析中的gmt格式文件

    在GSEA分析中,在MSigDB(Molecular Signatures Database)数据库中定义了很多基因集,下载的基因集是gmt格式文件.下载的gmt格式文件,打开后可以看见是下面这个样子 ...

  • 生信笔记 | 文本挖掘的一般流程

    一.文本挖掘的一般过程 参考: http://www.sthda.com/english/wiki/text-mining-and-word-cloud-fundamentals-in-r-5-sim ...

  • 【生信笔记】查找GEO数据集

    A 什么是GEO数据库? GEO数据库全称Gene Expression Omnibus database,是由美国国立生物技术信息中心NCBI创建并维护的基因表达数据库.它创建于2000年,收录了世 ...