#排序集合运算
#其中sort(x)等同于xorder(x)
下面以一小段R代码来举例说明:
x<-c(97,93,85,74,32,100,99,67)
sort(x)
rank(x)
x[order(x)]
dat[order(dat[,1]),] #以该数据框的第一列进行排序
dat[order(dat[,1],dat[,2]),] #以该数据框的第一列为主要次序,第二列为次要序列进行排序
#首先对集合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。
B<-seq(5,15,2)
C<-1:5
match(C,B)
C%in%B
引用自生信技能树公众号
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。