• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    教学以及管理操作教程

    教学以及管理操作教程

    ¥1,000.00 ¥100.00
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      教学以及管理操作教程

      教学以及管理操作教程

      ¥1,000.00 ¥100.00
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      生信星球

      • 首页
      • 博客
      • 生信星球
      • 哈佛R语言课程–3.函数、参数和R包

      哈佛R语言课程–3.函数、参数和R包

      • 发布者 weinfoeditor
      • 分类 生信星球
      • 日期 2019年4月9日
      测试开头

       今天是生信星球陪你的第332天


         大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

         就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

         这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!

      注意:微信自动屏蔽外链,所以链接打不开,请查看原版材料或者简书。
      原课程链接:
      https://hbctraining.github.io/Intro-to-R/lessons/02_introR-syntax-and-data-structures.html
      https://hbctraining.github.io/Intro-to-R/lessons/03_introR-functions-and-arguments.html

      系列目录

      推荐一套来自哈佛的R语言和差异分析课程

      哈佛R语言课程–1.R简介

      哈佛R语言课程–2.R语法与数据结构

      学习目标

      • R语言函数的描述和应用。

      • 使用参数修改R语言函数的默认操作

      • 从R帮助文档获取有关函数的更多信息

      • 创建用户自定义函数

      • 演示如何安装外部包以扩展R的功能。

      • 查询外部资料以
        (1)处理报错
        (2)获取有关函数和包的更多信息

      1.函数及其参数

      (1)什么是函数?

      函数是R语言的重要特征。函数是完成特定任务的“自包含”代码模块。函数通常是对某种数据结构(值,向量,数据框等)进行处理,并返回结果。

      函数的一般用法是:函数名+括号

      function_name(input)

      input称为参数,可包括:

      • 函数执行任务的物理对象(任何数据结构)

      • 改变函数的运作方式的规则(例如options)
        并非所有函数都带参数,例如:

      getwd()

      但大多数函数可采用多个参数。在调用函数时未指定必需参数,则会收到error,或者函数将采用默认值。

      默认值表示该函数的作者认为“标准情况下足够好”的标准值,比如在图中使用哪种符号。但是,如果你想要自定义,就用你选择的值更改参数。

      (2)基础函数

      在前面的课程中使用过几个基础函数,例如getwd(),c()和 factor(),它们是R内置函数的一部分,接下来探讨这些内置的基础函数。

      用户还可以从外部包或库中获取函数(稍后讨论),甚至可以编写自己的函数。

      复习一下将数据组合到向量中的函数c()。它所采用的参数是数字,字符或字符串的集合(以逗号分隔)。c()函数将数字或字符组合成单个向量。还可以用这个函数将元素添加到现有向量:

      glengths <- c(glengths, 90) # adding at the end    
      glengths <- c(30, glengths) # adding at the beginning

      可以在原始向量glengths(包含三个元素)的开头或结尾添加新对象。这个操作可以反复操作,以构建向量或数据集。

      R用于统计计算,因此许多基础函数涉及数学运算。比如sqrt()函数。输入/参数必须是数字,输出是该数字的平方根。比如81的平方根:

      sqrt(81)

      如果我们以数值向量代替单个数值作为输入,调用函数(例如运行函数)会怎么样?

      sqrt(glengths)

      R对glengths向量的每个值执行了计算,并输出结果。

      再试试另一个函数,这次可以改变某些选项(改变函数行为的参数),例如round:

      round(3.14159)
      #[1] 3

      结果是3。那是因为默认是舍入到最接近的整数。如果想要指定有效数字位数该怎么做?

      (3)寻求函数的帮助信息

      输入?+函数名称。执行此操作将在RStudio右下方面板打开帮助文档,该文档包括函数的功能、用法、参数、详细信息和示例:

      ?round

      如果熟悉该函数,只需要显示参数名称,用:

      args(round)

      example()函数更有用。这将允许您运行联机帮助中的示例部分,以确切了解它在执行命令时的工作方式。让我们试试round():

      example("round")

      在我们的示例中,我们可以通过添加参数来更改返回的位数。我们可以输入digits=2或者我们想要的许多东西:

      round(3.14159, digits=2)

      注意:按照函数定义的顺序(帮助文档中有)输入参数,可以省略参数名:

      round(3.14159, 2)

       

      但通常不推荐省略,因为记忆量大。此外,省略参数名使代码难于阅读,特别是包含不常用函数的时候。(当然不包括没有参数名的基础函数,如mean,min等)。写上参数名就不用关心参数顺序了,尤其适用于参数较多的函数。


      练习

      1. mean()也是个常用的基础函数。使用此函数计算glengths向量的平均值。

      2. 从帮助文档中学习mean()的其他参数。


      缺失值

      默认情况下,包含缺失数据的向量运行的所有R函数都将返回NA。这样能确保用户知道他们缺少数据,并自行决定如何处理。当处理像平均值这样的简单统计时,忽略NA(缺失数据)的最简单的方法就是指定参数na.rm=TRUE(rm代表删除)。

      在某些特定情况下,有必要从向量中删除缺失值。为此,na.omit函数可以移除向量中的NA。有的情况下需要保留所有观察结果,也有的情况下需要删除包含缺失值的整行结果。complete.cases()函数返回一个逻辑向量,指示哪些行没有缺失值。


      2.用户定义的函数

      允许用户自定义函数是R语言的一大优势。有时你需要做一个小任务(或一系列任务),发现必须多次重复某一操作。这种情况下,创建自定义函数就很有帮助。函数的结构如下:

      name_of_function <- function(argument1, argument2) {
          statements or code that does something
          return(something)
      }
      • 首先为自己的函数命名。

      • 然后为它赋值,这里的“值”就是函数具体内容。

      在定义函数时,需要提供所需参数列表(用于修改函数行为的输入和选项),并在大括号中输入执行/使用这些参数的代码。参数可以是任何类型的对象(如标量,矩阵,数据集,向量,逻辑值等),并且不需要以任何方式声明。

      最后,可以从函数中“return”对象的值,这意味着将其值传递到全局环境中。在函数内创建的对象是函数环境的局部对象,仅存在于函数内部,这是函数背后的一个重要思想。

      注意:也可以定义一个不需要任何参数、也不返回任何结果的函数。

      尝试创建一个简单的示例函数。此函数将以一个数值作为输入,返回它的平方值作为结果。

      square_it <- function(x) {
          square <- x * x
          return(square)
      }

      现在可以使用该函数,与使用任何其他函数的方法相同。函数的名称+括号,括号内输入数值x:

      square_it(5)

      很简单吧?在这种情况下,我们只运行了一行代码,但从理论上讲,您可以使用多行代码来获取要“返回”给用户的最终结果。在创建函数方面,只涉及到了一点皮毛!我们将在以后的课程中再次探讨这一点,如果有兴趣,也可以在R-bloggers网站上找到更多详细信息,这是square_it例子改编的来源。

      3.包和库

      包是R函数,数据和编译代码的集合,以明确定义的格式创建,以添加特定功能。已经超过10,000个用户贡献了R包,这个数量还在不断增长。

      有一组标准(或基础)软件包被视为R源代码的一部分,随R软件安装一起提供。基础包包含R的基本函数,是R运行所必须的,并对数据集标准统计和绘图的函数; 到目前为止我们在示例中使用的所有函数都属于基础包。

      R中存储包的目录称为库。术语包和库有时用作同义词,社区中已有关于这个问题的讨论。使用library()函数加载包有点不符合预期,可以看看为何会引起困惑。

      在控制台中输入以下代码,来检查当前R会话中加载的库:

      sessionInfo() #输入R的版本信息、系统、attach或加载的R包

      # OR

      search() #Gives a list of attached packages

      在本次课程中,我们向您介绍了标准基础包的函数。但是使用R的次数越多,就越会意识到R是个聚宝盆,收集了非常多R包,提供了各种各样的函数。要使用其他软件包,需要安装。可以从CRAN或Bioconductor存储库安装很多软件包。

      (1) 从CRAN安装包

      CRAN是一个存储库,除了数千个不同用户贡献的R包的源代码之外,还提供了最新的R(和旧版本)的下载地址。

      哈佛R语言课程--3.函数、参数和R包
      image

      可以使用install.packages函数从CRAN安装R包。此函数将从CRAN镜像上下载源代码,并在您的计算机上本地安装软件包(以及依赖项)。

      下面给出了稍后创建图表所需的包ggplot2的示例。运行此代码进行安装ggplot2。

      install.packages("ggplot2")

      (2) 从Bioconductor安装包装

      或者,也可以从Bioconductor安装包,Bioconductor是另一个R包存储库,提供分析和理解高通量基因组数据的工具。这些包包括(但不限于)用于统计分析,注释包和访问公共数据集的工具。

      哈佛R语言课程--3.函数、参数和R包

      许多软件包从CRAN和Bioconductor中都可获得,也有的软件包只存放于一个存储库。可以通过Google搜索或反复尝试来查找R包的来源信息。

      要从Bioconductor安装R包,首先需要安装BiocManager。BiocManager只需要安装一次。

      # DO NOT RUN THIS!

      install.packages("BiocManager")

      然后,您可以通过在install()中输入包名(注意加引号)来安装包。在这里,我们通过Bioconductor 安装和刚才一样的ggplot2:

      # DO NOT RUN THIS!

      library(BiocManager)
      install("ggplot2")

      (3)从源代码安装包

      最后,R包也可以从源代码安装。当没有Internet连接(并且在本地拥有源文件)时,这种方法很有用,因为其他两种方法是从远程站点检索源文件。

      要从源代码安装,也是用install.packages函数,但是添加了其他参数:

      # DO NOT RUN THIS!

      install.packages("~/Downloads/ggplot2_1.0.1.tar.gz", type="source", repos=NULL)

      (4)加载包

      安装软件包后,可以将包加载到R会话中,就可以使用该包中的任意函数,就像用基础函数一样。请注意,此处不需要引号。

      library(ggplot2)

      用sessionInfo()或检查当前环境中加载的内容,search()应该看到您的包列为:

      other attached packages:
      [1] ggplot2_2.0.0

      还有几个其他包也随ggplot2加载。

      (5)查找某个包内的函数

      第一次使用ggplot2,如何知道从哪里开始、可以使用哪些函数?一种方法是使用RStudio中的选项卡Package。如果单击选项卡,您将看到列出的所有已安装的软件包。对于已加载的包,您将在旁边的框中看到蓝色复选标记。向下滚动到列表中的ggplot2:

      哈佛R语言课程--3.函数、参数和R包

      如果已成功加载,将看到ggolot2前面的复选框,如上面的屏幕截图所示。现在,如果您单击ggplot2,RStudio将打开帮助页面,您可以滚动浏览。

      另一种方法是在线查找帮助手册,这种手册有时更容易理解。例如,http://docs.ggplot2.org/current/是ggplot2更加全面的操作手册,这是谷歌搜索的结果。许多Bioconductor软件包有实用的图文教程,还提供可用的示例数据。

      (6)查找函数但不知道它是哪个包

      如果您正在寻找执行特定任务的函数,您可以使用help.search()(但只能搜索你已安装的软件包):

      help.search("scatter")

      如果找不到所需内容,可以使用rdocumention.org网站搜索所有可用软件包中的帮助文件。

      (7)奇怪的报错

      很可能其他人已经遇到过同样的问题了!

      • 首先谷歌搜索报错消息。但不一定有用,因为通常情况下,包开发人员直接使用R自带的报错方式。最终收到的报错信息可能对诊断问题没有多大帮助(例如“subscript out of bounds”) 。

      • stackoverflow。使用[r]标签搜索。大多数问题能找到答案,但是要用对关键词:http://stackoverflow.com/questions/tagged/r


      练习

      ggplot2软件包是tidyverse集成软件包套件的一部分,旨在协同工作,使通用数据科学操作对用户更加友好。我们将tidyverse在以后的课程中使用该套件,所以让我们安装它。注意:此套件仅存放于CRAN。


      4.寻求帮助

      要获得某人帮助,关键是让对方迅速理解你的问题。应该尽可能简单明了地描述问题。

      (1)  要使用正确的关键词来描述你的问题。例如,包与库不同。有的人能理解你的意思,也有人会觉得有歧义。关键是,试图帮你的人可能看不懂。描述问题要尽可能精确。

      (2) 始终包括sessionInfo()的输出结果,因为它提供你的平台关键信息,R的版本、正在使用的软件包,以及其他有助于理解你的问题的信息。

      sessionInfo()  #This time it is not interchangeable with search()

      (3) 尽量用小的data.frame 重现并描述你的问题, 不要用原来成千上万行列的数据。对你的问题进行归纳总结,有助于其他领域的人理解这个问题。
         *  要将对象共享给其他人,可以将原始文件(即CSV文件)和脚本一起提交上去(并删除与问题无关的内容)。如果你处理的不是data.frame,则可以将环境中的任何R数据结构保存到文件中:

      # DO NOT RUN THIS!

      save(iris, file="/tmp/iris.RData")

      .RData文件不能直接读取,无法直接在stackoverflow上发布。但可以通过电子邮件发送给你要求助的人:

      # DO NOT RUN THIS!

      some_data <- load(file="~/Downloads/iris.RData")

      在哪里寻求帮助?

      • 友好的同事:你认识的比你经验丰富的人,可能并愿意帮助你。

      • Stackoverflow:如果问不到答案,就精心组织你的问题发到Stackoverflow,很可能不到5分钟就得到答案。

      • 在R-help:很多人(包括R核心团队的大部分人)会阅读、发布,但相当“干”(干货的干),新手不一定能看懂。如果你的问题是有效的,你可能会很快得到一个答案,但你还是不一定能看懂😢。此外,这里更强调措辞正确(否则很可能被指出措辞不当,而非得到问题答案)。如果问题是关于base包,会收到比扩展包问题更多的回复。

      • Bioconductor的支持网站。非常有用,如果你的帖子加上标签,很可能收到开发者给的答案!

      • 如果你的问题是关于扩展包的,可以先看这个包有没有mailing list。通常包含在包的DESCRIPTION文件中,用packageDescription("name-of-package")函数可以获取。可以尝试直接通过电子邮件发送给包的作者。

        哈佛R语言课程--3.函数、参数和R包
        希望Y叔不要打我
      • 还有一些特定于主题的mailing list(GIS,系统发育等),完整列表在http://www.r-project.org/mail.html。


      本课程由Harvard Chan Bioinformatics Core (HBC)
      的教学团队成员开发,中文版由简书ID@小洁忘了怎么分身(公众号@生信星球)整理。

      简书:小洁忘了怎么分身

      隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)

      国内看B站,教学视频链接:https://m.bilibili.com/space/338686099 
      国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists 

      友情链接:

      生信工程师入门最佳指南
      学徒培养

      资料大全



      点击底部的“阅读原文”,获得更好的阅读体验哦😻

      初学生信,很荣幸带你迈出第一步。

      我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到jieandze1314@gmail.com,每一条都会看到的哦~

      哈佛R语言课程--3.函数、参数和R包

      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoeditor

      上一篇文章

      Bioconductor没想象的那么简单-part4
      2019年4月9日

      下一篇文章

      从GEO的soft文件中提取探针序列信息
      2019年4月10日

      你可能也喜欢

      8-1651673488
      生信零基础入门学习小组长期报名中(2022仍继续)
      7 4月, 2022
      2-1651673738
      简化版的ROC曲线
      21 2月, 2022
      8-1651674718
      支持向量机模型
      19 11月, 2021

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?