R语言杂谈(四)--排序

2019-11-27  本文已影响0人  爱思考的照

排序 

sort() #默认是从小到大排序

sort(a,decreasing=T)#从大到小排序

举个例子,cat<-c(6 53 16 29 24 78 19 72 65)

sort(cat)为(6 16 19 24 29 53 65 72 78)

sort(cat, decreasing=T)为(78 72 65 53 29 24 19 16  6)

order也是排序但返回的是按从小到大排完后每个数在原来序列中的位置

order(cat)为(1 3 7 5 4 2 9 8 6)

cat[order(cat)] 返回的是sort(cat)

可以通过逻辑值获得我们所需要的队列:cat[cat==78]返回的就是78

which可以获得所在的位置:which(cat==78)返回的是6

还能怎么获取位置呢?

举个例子,我们设定d <- c("TP53","ERBB2","BRCA1")

## grep表示抓取,返回的是数字

grep("ERBB2",d) 返回的是 2 

## grepl,表示grep+logical,返回的是逻辑值

grepl("ERBB2",d) 返回的是FALSE,TRUE,FALSE

## 使用逻辑值获取子集

d[grepl("ERBB2",d)] 返回的是 "ERBB2"

# 此时跟 %in% 的用法一样,A %in% B 表示A是否存在于B,返回的是逻辑

"ERBB2" %in% d 返回的是TRUE

d %in% "ERBB2" 返回的是FALSE TRUE FLASE

d[d %in% "ERBB2"] 返回的是"ERBB2"

## 取交集intersect(x,y) 很常用

d <- c("TP53","ERBB2","BRCA1")

e <- c("ERBB2","BRCA1","TP54")

intersect(d,e) 返回的是 "ERBB2" "BRCA1"

## 再试试%in%,操作逻辑是判断d中的每一个元素是否存在于e

d %in% e 返回的是 FALSE TRUE TRUE

d[d %in% e] 返回的是 "ERBB2" "BRCA1"

上一篇下一篇

猜你喜欢

热点阅读