前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言练习:排序、集合

R语言练习:排序、集合

原创
作者头像
不会写代码的医学生
发布2024-03-14 16:27:13
800
发布2024-03-14 16:27:13
举报

#排序集合运算

在R中,和排序相关的函数主要有三个:sort(),rank(),order()。

sort(x)是对向量x进行排序,返回值排序后的数值向量。

rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”。

order()的返回值是对应“排名”的元素所在向量中的位置。

#其中sort(x)等同于xorder(x)

下面以一小段R代码来举例说明:

代码语言:r
复制
x<-c(97,93,85,74,32,100,99,67)
sort(x)
rank(x)
x[order(x)]

其中比较有用的order,它可以用来给数据框进行排序

代码语言:r
复制
dat[order(dat[,1]),]  #以该数据框的第一列进行排序
dat[order(dat[,1],dat[,2]),]  #以该数据框的第一列为主要次序,第二列为次要序列进行排序

在R里面除了简单的对两个向量求交集并集补集之外,比较重要的就是match和 %in% 了,需要重点讲讲。

代码语言:r
复制
#首先对集合A,B,C赋值
A<-1:10
B<-seq(5,15,2)
C<-1:5
#求A和B的并集
union(A,B)
#求A和B的交集
intersect(A,B)
#求A-B
setdiff(A,B)
#求B-A
setdiff(B,A)
#检验集合A,B是否相同
setequal(A,B)
#检验元素12是否属于集合C
is.element(12,C)
12%in%C
#检验集合A是否包含C
all(C%in%A)
C%in%A #C里面的所有元素在不在A里
all(C%in%B)

从上面可以看到%in%这个操作符只返回逻辑向量TRUE或者FALSE,而且返回值应该与%in%这个操作符前面的向量长度相等。也就是说它相当于遍历了C里面的一个个元素,判断它们是否在B中出现过,然后返回是或者否即可。

而match(C,B)的结果就很不一样了,它的返回结果同样与前面的向量等长,但是它并非返回逻辑向量,而是遍历了C里面的一个个元素,判断它们是否在B中出现过,如果出现就返回在B中的索引号,如果没有出现,就返回NA。

代码语言:r
复制
B<-seq(5,15,2)
C<-1:5
match(C,B)
C%in%B

引用自生信技能树公众号

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在R中,和排序相关的函数主要有三个:sort(),rank(),order()。
    • sort(x)是对向量x进行排序,返回值排序后的数值向量。
      • rank()是求秩的函数,它的返回值是这个向量中对应元素的“排名”。
        • order()的返回值是对应“排名”的元素所在向量中的位置。
        • 其中比较有用的order,它可以用来给数据框进行排序
        • 在R里面除了简单的对两个向量求交集并集补集之外,比较重要的就是match和 %in% 了,需要重点讲讲。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档