美文网首页
R语言的碎碎念

R语言的碎碎念

作者: 生信云笔记 | 来源:发表于2023-07-28 22:45 被阅读0次

    日常瞎掰

      前面聊过了linux入门学习指南,今天来聊聊R语言。做为一个脚本型的高级语言,R常被用于数据处理、统计分析、数据可视化等方面。在生命科学领域的研究中也是随处可见R的身影,里面有很多现成的扩展包可用于各种组学数据的分析和展示。为什么R能够赢得科研人员的青睐呢?
      这得益于R简单易用的特点:首先,R的语法相对简单,学习成本很低,极易上手,只需花费很少的学习时间就可满足日常工作的需求;再者,R无需复杂的编程过程,基于向量化特性和函数调用,少量的代码即可轻松完成任务;同时,R语言里面拥有较为完善的处理生命科学数据的生态系统。简单来说,用R语言分析数据可以节约科研人员的时间成本。这感觉就好像用office excel一样,没有什么学习负担,能够有更多的时间专注于探索数据的意义。
      日常分析中R的使用过程似乎没有什么编程思维可言,大都是借助现有的函数来解决问题,要么R自带的函数要么扩展包里的函数。接触R语言挺长时间了,做为一个使用者,感受最为强烈的就是解决问题时包治百病,复杂一点的问题一个包不行那就多用几个 (调包侠不是在调用包就是在调用包的路上)。
      这么易用且合适的工具,这谁能拒绝得了?那么,应该如何学习将其收入囊中呢?个人觉得首先得弄明白以下的几个方面。

    数据结构

      首先,要搞明白R里面的基础数据结构,这些是数据的载体,用来存储需要处理的数据,即使复杂的数据对象也是建立在这些基础的数据结构之上。所以,了解数据结构的相关属性和方法,有助于更好的处理数据。

      上面以示意图的方式展示了R里面的基础数据结构,其中除了数组(array)其余都很常用,尤其向量(vector)、矩阵(matrix)、数据框(dataframe)。除创建数据外,想要处理数据还需要明白数据结构的一些基本操作如增、删、改、查等。虽然R里面有多个数据结构,但都是以向量为基础,get到这一点,就可以把处理向量的那一套扩展到其他结构当中。当然,除了上面展示的数据结构外,R里面还有一个比较特殊的数据类型 - 因子(factor),该类型常用于离散型数据的分组。

    向量化操作

      R处理数据之所以方便,很大程度上得益于向量化特性,明白了这一点,数据操控事倍功半。那什么是向量化特性呢?下面用一个简单的栗子来说明:

    data1 <- 1:5
    data1
    [1] 1 2 3 4 5
    
    data2 <- data1 + 1
    data2
    [1] 2 3 4 5 6
    
    data3 <- data1 + data2
    data3
    [1]  3  5  7  9 11
    

      上面的代码首先创建了一个数值向量data1,给data1的每个元素都加1,利用向量化操作只需用data1 + 1即可实现;data1每个元素都加不同的数值,利用向量化操作来实现只需准备好另外一个向量data2,然后data1 + data2就可实现。如果没有向量化特性,想要实现前面的操作那就得借助循环来实现,与向量化操作相比,使用循环的话高低得多整几行代码了。虽然向量化特性好用,但使用时还是有需要注意的地方。看下面的例子:

    data1 <- 1:5
    data1
    [1] 1 2 3 4 5
    
    data2 <- 6:8
    data2
    [1] 6 7 8
    
    data3 <- data1 +data2
    Warning message:
    In data1 + data2 :
      longer object length is not a multiple of shorter object length
    data3
    [1]  7  9 11 10 12
    

      从上面的代码可以看出,data1data2长度虽然不同却能直接相加,但得到结果未必是想要的。由此可知,R语言的兼容性很强,所以使用时需要有正确的判断。

    数据读写

      这个自不必多说,毕竟首先需要将自己的数据读取到R环境中,然后将处理好数据保存到文件里面。这样的常规操作有对应的函数可用,调用一下即可。

    分支

      分支判断就不多说了,想要完成复杂的数据处理还是有必要的。不过,简单的分支判断还是交给R自带的ifelse函数来处理吧,效率不错。

    循环

      forwhile两种循环方式根据情况选择,不过,R里面有个循环函数家族,如applysapply等都是经常使用的函数。还是那句话,优先考虑用循环函数解决,效率高,充分发挥R语言的特性。

    函数

      前面说过R语言用起来之所以快捷一方面是基于函数调用,来自R内部及扩展包的函数所形成的生态基本覆盖了数据分析和可视化。站在别人的基础上,只需准备好函数所需的输入,即可得到想要的结果。函数便于代码复用,对于经常使用的功能写成函数确实可以提高后续的工作效率。

    结束语

      R做为可以交互式使用的脚本型语言,可以说语法规则是相当的简单,有了上面提到的那些知识,基本上可以根据别人的代码照猫画虎了。从语言的使用角度来说,基本上也算入门了。不过,R语言虽然简单,但想要用的得心应手也不是那么容易,就像学开车,把车开动起来也许不难,但想要成为经验丰富的老司机还是需要多多实践。
      虽然上面提到的那些方面都是基础,但却是使用R的第一步,就写文章一样,第一步是认字,然后是组词造句,再者是连句成文,如果顺序反过来,定然会浪费很多时间在查字典与纠错上。能不能写出文章由基础决定,能不能写出好文章那就是另外一回事了。
      前面提到R无需复杂的编程过程,这源自于向量化特性和函数调用,前者简化了循环,后者方便了过程,两者结合更是提高了效率。说了这么多,为啥没有提画图呢?因为用R画图本质上也是调用函数,只不过有时候形式上也许会有不同,如鼎鼎有名的ggplot2+叠加图层的过程。
      对于使用工具或方法,很喜欢一句话:知其道,用其妙!不废话了,来来来,让咱们一起努力成为调包侠。。。😄😄😄

    往期回顾

    linux入门学习指南
    武林大会之对角线热图
    ggplot2 | 绘制双y轴的图型
    tidydr | 一行代码搞定小坐标系
    rnanorm | 一行命令搞定RNA-seq标准化

    相关文章

      网友评论

          本文标题:R语言的碎碎念

          本文链接:https://www.haomeiwen.com/subject/hpwrudtx.html