R语言系列7 | 变量类型6-向量6

“ 终于迎来了向量的终章,到这篇文章末为止,大部分代码里的向量操作都难不倒你了,和数据生成以及索引等的操作也都再不是问题,准备好腾飞到矩阵和数据框的世界吧!。”

作为向量部分的终结之章,这篇文章也要讲一些高端上档次的东西,或者说讲一些极其常用的分析操作,比如排序,逆置以及一些其它的东西,最后给大家来一个总结,升华主题,然后进入R矩阵的学习。

Sort和Order

首先,我们的第一部分要讲解的就是关于排序操作的知识。在R语言中,我们常用的排序有两个函数,sort和order函数。其中,sort返回我们排序后的结果,而order函数返回排序后的索引值。

二者都是比较轻便的函数,基本上可以满足简单的排序需求了。

下面先通过案例讲解sort函数

sort函数最基本的用法就是直接给个向量

然后返回递增的结果

sort(c(3,1,6,2,8))
[1] 1 2 3 6 8

如果你想返回递减的结果 请使用参数decreasing=T

sort(c(3,1,6,2,8),decreasing = T)
[1] 8 6 3 2 1

上面我们对数值型向量进行了排序,接下来我们对字符型进行排序

sort(c('bac','bab','aaa','opg'))
[1] "aaa" "bab" "bac" "opg"

通过仔细观测上述结果可以看出来,sort函数对字符串的排序是按照字符的顺序的,如果是多个字符进行排序的话会对字符依次进行排序,然后得到排序的结果并返回。

(别在这扯ascii码,扯多了会让你有些混乱,记住能排序数字和字符就够使了)

!!!!不要把数字和字符放在一个向量进行排序,这是不好的编程习惯!!!!

下面是关于order函数的讲解,这是个非常有意思的函数,它可以返回排序好的索引值,

order函数

order(c(2,4,1,3))
[1] 3 1 4 2

返回递增的索引

order(c(2,4,1,3),decreasing = T)
[1] 2 4 1 3
这里大家可能看的有些懵,可能我的样例取得不太好,我们这样看组一个索引和值的对,2 - 1, 4 - 2, 1 - 3, 3 - 4,后面是我们的索引值,然后排序的话,正确顺序的1 2 3 4,那么对应的索引就是 3 1 4 2 ,是不是和我们的第一返回值相同呢?如果反过来的2 4 3 1 就正好是递减的索引值了,这就是我们的order排序方法。

使用order排序结果

a <- c(2,4,3,1)
a[order(a)]
[1] 1 2 3 4

到这里可能很多人要说我多此一举了,这order和sort不是一个样子吗,还得多写一步浪费时间。我要告诉你并不是这样,比如我现在有一个数据框,想按照p值进行排序,我们使用order生成了排序索引,直接对行进行索引,不就直接得到了排序结果了吗?

逆置向量 - rev

这一部分的内容非常简单粗暴,就像我们的length函数一样。这里的函数名叫逆置向量函数,用大白话说起来就是把一个向量倒过来,这就是逆置。

rev函数

rev(c('a','c','b','r'))
[1] "r" "b" "c" "a"
rev(c(6,9,1,7))
[1] 7 1 9 6
一目了然,这就是逆置函数,简单粗暴的很。而真正的处理过程中,我们有些时候会把数据按照反顺序存进一个向量里,存好后逆置一下就能得到我们要的结果了。

unique和duplicated - 去重

上文讲解了逆置和排序操作,而我们实操的时候还有一个非常非常重要的操作 - 去重。这个名字不说大家也知道,这是非常重要的内容,也是数据分析中必不可少的一部分。

在R的base环境里,我们提供了两个有去重功能的函数,一个是unique,一个是duplicated。

下面给出实例进行讲解,

unique

unique(c(1,2,1,1,2,1))
[1] 1 2
unique(c(1,2,1,1,2,1,3))
[1] 1 2 3
在本章节,unique函数的作用就是这样,帮你找到不重复的值,然后进行输出.

而duplicated则是返回一组布尔值索引,方便你进行后续的操作(针对数据框)

duplicated(c(1,2,1,1,2,1))
[1] FALSE FALSE TRUE TRUE TRUE TRUE
duplicated(c(1,2,1,1,2,1,3))
[1] FALSE FALSE TRUE TRUE TRUE TRUE FALSE
!!!但是我们要注意 这里是索引是重复值的索引 想要不重复的需要使用!符号进行取反操作然后再进行索引!!!

a <- c(a,1,7,3,3,4)

取出重复位置

a[duplicated(a)]
[1] 1 3 3 4

取出非重复位置

a[!duplicated(a)]
[1] 2 4 3 1 7

上面就是关于使用R的基础环境进行去重的操作了!

大总结

最后的最后,给大家的向量之旅进行一个大总结,过于的6篇推文中,我们从向量的创建开始到如何索引向量,增加和删除向量的元素;然后取向量的长度,接下来学习了使用冒号运算符 seq和rep来生成向量;接下来,我们学习到两种非常重要的表示即 NA 和 NULL,然后我们学习了如何对向量中的值进行筛选,使用subset可以跳过缺失值,使用which可以获取索引值。

最后,今天我们学习了最最重要的排序方法,取排序的索引,逆置向量,对向量进行去重操作,取重复值和非重复位置的方法,其中很多方法后面还会有讲解,但是都是以应用为主了。

下一篇的内容将会开始讲解一个有些数学的概念 - 矩阵,在R中,矩阵本身是一种基本的数据类型,具有很多函数和方法来对其进行操作。

如果你喜欢我的文章,请收藏我的文章并且给我个赞,你的支持就是我更新的最大的动力,关注我会有更多惊喜哦,专注于生物信息学以及数据分析入门和进阶教程,也许我给不了你从10-100,但是我可以给你最好的从0-10!

最后,关注我的公众号,领取更多学习资料吧!!!

打开v搜索,”轻松玩转生信“或者从下面文章进去获取二维码关注哦

二维码传送门

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容