前面我们简单的介绍了R函数。有些人可能会说,我现在的R水平有限,还不足以写出很高级的函数,该怎么办?俗话说前人栽树后人乘凉,他山之石可以攻玉,鲁迅同志也提出过“拿来”主义。已经有前人,高手写出了很多很实用,很强大的R函数,你直接拿来用就可以了。如果你很好学,也可以把人家的函数源代码拿来学习,其实这也是一种学习R的很好的方法。你如果完全读懂了原作者的函数,你还可以稍作修改用作他用,甚至可以让这个函数功能更加强大。

下面给大家举个具体的例子,火山图大家可能都不陌生,是一种展示差异表达分析结果的常用可视化方式。

在R的GDCRNATools包中就内置了一个专门画火山图的函数,叫做gdcVolcanoPlot。我们有两种方法可以获取这个函数的源代码。

1.通过下面的链接来获取gdcVolcanoPlot的源代码

https://rdrr.io/bioc/GDCRNATools/src/R/gdcDEGVisulization.R

2.从Bioconductor官网上去下载这个R包的所有源代码,

http://www.bioconductor.org/packages/release/bioc/html/GDCRNATools.html

注意一定要下载tar.gz格式的文件。.zip格式的文件是windows系统下的R安装包,都是已经编译过的,你是无法看到源代码的。

解压之后你就看到所有函数的源代码

我们要找的gdcVolcanoPlot的源代码就在gdcDEGVisulization.R这个文件中。

我们照""gdcVolcanoPlot这个函数,接下来我们就可以用这个函数来绘制火山图了。

gdcVolcanoPlot<-function (deg.all, fc = 2, pval = 0.01)
{geneList <- deg.allgeneList$threshold <- c()geneList$threshold[geneList$logFC > log(fc, 2) & geneList$FDR < pval] <- 1geneList$threshold[geneList$logFC >= -log(fc, 2) & geneList$logFC <= log(fc, 2) | geneList$FDR >= pval] <- 2geneList$threshold[geneList$logFC < -log(fc, 2) & geneList$FDR < pval] <- 3geneList$threshold <- as.factor(geneList$threshold)lim <- max(max(geneList$logFC), abs(min(geneList$logFC))) + 0.5volcano <- ggplot(data = geneList, aes(x = logFC, y = -log10(FDR)))volcano + geom_point(aes(color = threshold), alpha = 1, size = 0.8) + xlab("log2(Fold Change)") + ylab("-log10(FDR)") + scale_colour_manual(values = c("red", "black", "green3")) + xlim(c(-lim, lim)) + geom_vline(xintercept = c(-log(fc, 2), log(fc, 2)), color = "darkgreen", linetype = 3) + geom_hline(yintercept = -log(pval, 10), color = "darkgreen", linetype = 3) + theme_bw() + theme(axis.line = element_line(colour = "black"), panel.grid.major = element_blank(), panel.grid.minor = element_blank(), panel.border = element_rect(colour = "black"), panel.background = element_blank()) + theme(legend.position = "none") + theme(axis.text = element_text(size = 14), axis.title = element_text(size = 16))
}
​

接下来我们来画火山图,数据是从DEGAll.rda这个文件中来,具体如何生成这个文件和如何使用这个文件可以参考R的save,load函数和 .rda文件。加载之后你就会有DEGall这个变量了,里面存放的是差异表达分析之后的结果。画火山图需要用到logFC,FDR。

load("DEGAll.rda")
#这里用到ggplot2这个包来画图
library(ggplot2)
gdcVolcanoPlot(DEGAll)

你就会得到下面这张火山图,是不是很方便,不会写函数一样可以画火山图。

Reference:

1.R的save,load函数和 .rda文件

2.R函数

DEGAll.rda文件的获取方式请参考下面这篇文章

https://mp.weixin.qq.com/s?__biz=MzI4ODE0NTE3OA==&mid=2649206010&idx=1&sn=976c0bf7081f82527a47f758b7cbf909&chksm=f3d1e68fc4a66f996d87c44551ceafc7d4e5bc19b368499a474dedeb3a471456362b5108d23a&token=1910394879&lang=zh_CN#rd​mp.weixin.qq.com

rect函数_R函数不会写,quot;抄quot;总会吧!相关推荐

  1. AppBaseJs 类库 网上常用的javascript函数及其他js类库写的

    AppBaseJs类库.一个借鉴了网上常用的函数及其他js类库写的,方便大家的调用. 代码如下: /*-----------------------------------  Web Applicat ...

  2. 【Groovy】循环控制 ( Number 注入函数实现循环 | times 函数 | upto 函数 | downto 函数 | step 函数 | 闭包作为最后参数可写在外面 )

    文章目录 前言 一.times 循环函数 二.upto 循环函数 三.downto 循环函数 四.step 循环函数 1.step 循环函数递增操作 2.step 循环函数递减操作 五.闭包作为参数的 ...

  3. python函数增强代码可读性_写Python必须知道的这几个代码技巧!你会吗?

    Day09 函数的初始 函数:函数是以功能为导向,一个函数封装一个功能.登录,注册,文件的改的操作... 函数减少代码的重复性,增强了代码的可读性: 获取任意一个字符串的元素的个数 s1 = &quo ...

  4. 编写一个C程序,实现以下功能:用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为:int strcmp(char *p1,char *p2);设p1指向字符串s

    题目描述: 编写一个C程序,实现以下功能: 用一个函数实现两个字符串的比较,即自己写一个strcmp函数,函数原型为: int strcmp(char *p1,char *p2); 设p1指向字符串s ...

  5. python函数的组成要素_写好一个Python函数的六要素

    Python 虽然好用,但用好真的很难.尤其是函数部分,只要写不好,后面的一连串人都会遭殃.看又看不懂,测试起来也麻烦,维护又维护不动,真是让人头疼. 那怎么写好一个 Python 函数呢?<W ...

  6. 手写C语言之函数概念-函数分类-实参与形参-传值调用与传址调用介绍(11)

    目录 函数是什么? C语言中函数的分类 库函数 自定义函数 写一个函数可以找出两个整数中的最大值. 交换整型变量的函数 函数的参数 实际参数(实参) 形式参数(形参) 函数的调用 传值调用 传址调用 ...

  7. if函数多个条件php,EXCEL中IF函数多条件判断怎么写

    在表格函数的运用中,"IF"函数我们经常用到,往往我们用"IF"判读多个条件时,运用的是多级嵌套的方式.然而,我们需要多个条件,只需满足其中一个条件时就返回真值 ...

  8. #跟我一起写 Makefile# origin函数shell函数

    目录 origin函数 shell函数 origin函数 origin函数不像其它的函数,他并不操作变量的值,他只是告诉你你的这个变量是哪里来的?其语法是: $(origin <variable ...

  9. r语言的runmed函数_R实战 第五篇:常用函数的用法

    Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数. 一,合并向量 函数appe ...

最新文章

  1. 首届数字中国建设峰会之“数字经济 · 闽江夜话”
  2. python使用函数的优点-Python函数的特点
  3. 各种排序总结(一)直接插入排序
  4. 机器学习--线性回归、逻辑回归
  5. DML、DDL的概念与区别
  6. 电脑软件测试英雄联盟,揭秘英雄联盟的自动化测试
  7. 无线射频专题《无线局域网排错,第二层重传问题7@远近问题》
  8. Web 开发最有用的50款 jQuery 插件集锦——《图片特效篇》
  9. Rust编程语言入门教程(一)-什么是Rust
  10. 使用scrapy爬取qq音乐
  11. 《 HTML5 》— HTML5页面元素及属性
  12. 20230107报警器的测试
  13. macOS 访达的显示模式(如图标大小)“用作默认”(应用到所有子文件夹)的运作逻辑
  14. javascript通用方法封装
  15. 打印数字矩形 (python)
  16. 安卓Android调用C语言实现其他进程应用app的内存变量读取修改与利用BusyBox实现应用暂停和恢复(Native层)
  17. 太子妃升职记全集种子下载
  18. windows删除顽固文件
  19. 记录配置微信外链跳转小程序踩坑(H5跳转小程序)
  20. HiveUDF的evaluate方法使用分析

热门文章

  1. 使用Spring Security 5进行密码编码器迁移
  2. jee web_您基于JEE的Web项目的结构是什么?
  3. 新的JDK 11文件方法isSameContent()
  4. PostgreSQL开放自由
  5. java io顺序_Java顺序IO性能
  6. spring social_Spring Social入门
  7. javaone_JavaOne 2012 – 2400小时! 一些建议
  8. SWT ScrolledComposite解释
  9. 摆脱困境:从计划作业中调用安全方法
  10. 适用于JDeveloper 11gR2的Glassfish插件