专栏首页用户7627119的专栏R函数不会写,"抄"总会吧!

R函数不会写,"抄"总会吧!

前面我们简单的介绍了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.all
  geneList$threshold <- c()
  geneList$threshold[geneList$logFC > log(fc, 2) & geneList$FDR < 
                       pval] <- 1
  geneList$threshold[geneList$logFC >= -log(fc, 2) & geneList$logFC <= 
                       log(fc, 2) | geneList$FDR >= pval] <- 2
  geneList$threshold[geneList$logFC < -log(fc, 2) & geneList$FDR < 
                       pval] <- 3
  geneList$threshold <- as.factor(geneList$threshold)
  lim <- max(max(geneList$logFC), abs(min(geneList$logFC))) + 
    0.5
  volcano <- 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)

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

关注公众号,后台回复"火山图",获取DEGAll.rda文件。

Reference:

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

2.R函数

本文分享自微信公众号 - 生信交流平台(gh_d04ce007f7b8),作者:生信交流平台

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【黄啊码】微信小程序支付学不会,照抄总会吧!

    为了方便,我直接在example文件夹中找到WxPay.Config分别设置了,打码的部分自行补充

    黄啊码
  • 68个Python内置函数,你不会不知道吧?

    内置函数就是Python给你提供的,拿来直接用的函数,比如print.,input等。

    小F
  • 小白学数据 | 28张小抄表大放送:Python,R,大数据,机器学习

    大数据文摘
  • 「Workshop」第二期:程序控制与数据操作流

    《R for Data Science》: http://r4ds.had.co.nz/

    王诗翔呀
  • R函数,如何“抄”出水平

    前面给大家介绍了,自己不会写R函数如何去“抄”高手写好的函数,我们直接“拿来”用就可以了。有读者反映为什么不直接用gdcVolcanoPlot这个函数,...

    生信交流平台
  • 「Workshop」第六期:R 包开发

    这里汇总的信息和视频解读推荐每个想要进阶和学习 R 包开发的读者看一看,是我两年开发经验的一个总结。R 包的开发目前是前所未有的简单,但大部分 R 用户不了解,...

    王诗翔呀
  • 怎么样“抄“一个PHP扩展

    写一个WEB服务器,如果用file_get_contents从磁盘中读取文件,并发直线下降,用sendfile可以提升性能。但是PHP不支持,开发扩展我又不会,...

    猿哥
  • 我的5年Python7年R,述说她们的差异在哪里?

    首次接触R语言是在2012年读研的时候,有一门课程是统计分析与R语言,清晰地记得期末考试时,由于把答案给同学抄,最终落了个重考的后果(重考92分)。那个时候真的...

    1480
  • 全民Python?不!我就偏爱Excel~

    不知道是不是因为营销号们最近洗脑的缘故,感觉周围所有人都在学Python的路上。这么说可能有点夸张,如果学Python只是为了做日常的数据分析的话,不如先回去把...

    二号姬
  • 什么是好的R包

    我发现写作这个事情也非常遵循楞次定律,上学期一旦开始了越写越停不下来,但是过春节停一段时间后,越不写越难以重新开始。整理了不少东西可以写作,但是每次都被懒癌打败...

    Listenlii-生物信息知识分享
  • 增长乏力、违法成本低,互联网抄袭为何屡禁不止?

    今天,尽管国人对于知识产权越发重视,但是互联网抄袭之风却从未真正停止过,甚至还有愈演愈烈之势。日前,老牌K歌APP唱吧被媒体曝出抄袭唱鸭独家研发的弹唱功能,再次...

    刘旷
  • 初来乍到,聊聊自己这一年的学习和开发练习

    记得那时候吧 搭起来一个小的Spring boot项目能激动半天 还要买瓶汽水庆祝下(其实想喝了)

    代码哈士奇
  • 【译文】怎样学习R(下)

    何品言翻译,广东科技学院大学生,喜欢R语言和数据科学。 王陆勤审核,从事数据挖掘工作,专注机器学习研究与应用。 英文链接:http://www.r-blogge...

    小莹莹
  • 超赞!两张小抄,带你 “迅速” 掌握Pandas “数据清洗” 流程!

    今天这篇文章,就当作是pandas教程的开篇文章吧!这是由Pandas官方发布的两张 “小抄”,内容不像matplotlib小抄那么多,但是内容确实极其精简,肯...

    数据分析与统计学之美
  • python爬虫,2020年《财富》中国500强排行榜数据爬取源码

    一个简单的demo,python爬虫,其实是以前的存货,很久很久没有写爬虫了,渣渣更渣了啊!

    二爷
  • [labuladong算法小抄]如何判断回文链表

    因为回文串长度可能为奇数也可能是偶数,长度为奇数时只存在一个中心点,而长度为偶数时存在两个中心点,所以上面这个函数需要传入l和r。

    陶士涵
  • Mathematica 谜中智 | 趣味象棋 一马平川

    WolframChina
  • VBA新手教程:没放弃咱就开整(1)

    统计《某马拉牙》的《百家讲坛易中天品三国》各期节目中得出,收听第1期节目的人次为1247.4万,收听第2期的人次为741.1万,全部收听过至少一次的人次是127...

    可以叫我才哥
  • 设计一个前端组件库,需要具备哪些能力?

    当时很沉迷《守望先锋》,有一天突发奇想:我要把游戏里面的 UI 做成前端组件库会怎么样? 然后就一步步开始做了,最后也算把它给实现了。

    陈大鱼头

扫码关注云+社区

领取腾讯云代金券